SDL  2.0.0
glm Namespace Reference

Namespaces

 _detail
 
 detail
 
 gtx
 

Data Structures

class  dont_care
 
class  nicest
 
class  fastest
 

Typedefs

typedef mediump_vec2 vec2
 
typedef mediump_vec3 vec3
 
typedef mediump_vec4 vec4
 
typedef mediump_mat2x2 mat2x2
 
typedef mediump_mat2x3 mat2x3
 
typedef mediump_mat2x4 mat2x4
 
typedef mediump_mat3x2 mat3x2
 
typedef mediump_mat3x3 mat3x3
 
typedef mediump_mat3x4 mat3x4
 
typedef mediump_mat4x2 mat4x2
 
typedef mediump_mat4x3 mat4x3
 
typedef mediump_mat4x4 mat4x4
 
typedef mat2x2 mat2
 
typedef mat3x3 mat3
 
typedef mat4x4 mat4
 
typedef mediump_ivec2 ivec2
 
typedef mediump_ivec3 ivec3
 
typedef mediump_ivec4 ivec4
 
typedef mediump_uvec2 uvec2
 
typedef mediump_uvec3 uvec3
 
typedef mediump_uvec4 uvec4
 
typedef detail::tvec2< bool > bvec2
 
typedef detail::tvec3< bool > bvec3
 
typedef detail::tvec4< bool > bvec4
 
typedef detail::tvec2< double > dvec2
 
typedef detail::tvec3< double > dvec3
 
typedef detail::tvec4< double > dvec4
 
typedef detail::tmat2x2< double > dmat2
 
typedef detail::tmat3x3< double > dmat3
 
typedef detail::tmat4x4< double > dmat4
 
typedef detail::tmat2x2< double > dmat2x2
 
typedef detail::tmat2x3< double > dmat2x3
 
typedef detail::tmat2x4< double > dmat2x4
 
typedef detail::tmat3x2< double > dmat3x2
 
typedef detail::tmat3x3< double > dmat3x3
 
typedef detail::tmat3x4< double > dmat3x4
 
typedef detail::tmat4x2< double > dmat4x2
 
typedef detail::tmat4x3< double > dmat4x3
 
typedef detail::tmat4x4< double > dmat4x4
 
typedef float lowp_float_t
 
typedef float mediump_float_t
 
typedef double highp_float_t
 
typedef lowp_float_t lowp_float
 
typedef mediump_float_t mediump_float
 
typedef highp_float_t highp_float
 
typedef mediump_float float_t
 
typedef detail::lowp_int_t lowp_int
 
typedef detail::mediump_int_t mediump_int
 
typedef detail::highp_int_t highp_int
 
typedef detail::lowp_uint_t lowp_uint
 
typedef detail::mediump_uint_t mediump_uint
 
typedef detail::highp_uint_t highp_uint
 
typedef mediump_int int_t
 
typedef mediump_uint uint_t
 
typedef uint_t uint
 
typedef detail::tmat2x2
< lowp_float
lowp_mat2
 
typedef detail::tmat2x2
< mediump_float
mediump_mat2
 
typedef detail::tmat2x2
< highp_float
highp_mat2
 
typedef detail::tmat2x2
< lowp_float
lowp_mat2x2
 
typedef detail::tmat2x2
< mediump_float
mediump_mat2x2
 
typedef detail::tmat2x2
< highp_float
highp_mat2x2
 
typedef detail::tmat2x3
< lowp_float
lowp_mat2x3
 
typedef detail::tmat2x3
< mediump_float
mediump_mat2x3
 
typedef detail::tmat2x3
< highp_float
highp_mat2x3
 
typedef detail::tmat2x4
< lowp_float
lowp_mat2x4
 
typedef detail::tmat2x4
< mediump_float
mediump_mat2x4
 
typedef detail::tmat2x4
< highp_float
highp_mat2x4
 
typedef detail::tmat3x2
< lowp_float
lowp_mat3x2
 
typedef detail::tmat3x2
< mediump_float
mediump_mat3x2
 
typedef detail::tmat3x2
< highp_float
highp_mat3x2
 
typedef detail::tmat3x3
< lowp_float
lowp_mat3
 
typedef detail::tmat3x3
< mediump_float
mediump_mat3
 
typedef detail::tmat3x3
< highp_float
highp_mat3
 
typedef detail::tmat3x3
< lowp_float
lowp_mat3x3
 
typedef detail::tmat3x3
< mediump_float
mediump_mat3x3
 
typedef detail::tmat3x3
< highp_float
highp_mat3x3
 
typedef detail::tmat3x4
< lowp_float
lowp_mat3x4
 
typedef detail::tmat3x4
< mediump_float
mediump_mat3x4
 
typedef detail::tmat3x4
< highp_float
highp_mat3x4
 
typedef detail::tmat4x2
< lowp_float
lowp_mat4x2
 
typedef detail::tmat4x2
< mediump_float
mediump_mat4x2
 
typedef detail::tmat4x2
< highp_float
highp_mat4x2
 
typedef detail::tmat4x3
< lowp_float
lowp_mat4x3
 
typedef detail::tmat4x3
< mediump_float
mediump_mat4x3
 
typedef detail::tmat4x3
< highp_float
highp_mat4x3
 
typedef detail::tmat4x4
< lowp_float
lowp_mat4
 
typedef detail::tmat4x4
< mediump_float
mediump_mat4
 
typedef detail::tmat4x4
< highp_float
highp_mat4
 
typedef detail::tmat4x4
< lowp_float
lowp_mat4x4
 
typedef detail::tmat4x4
< mediump_float
mediump_mat4x4
 
typedef detail::tmat4x4
< highp_float
highp_mat4x4
 
typedef detail::tvec2
< highp_float
highp_vec2
 
typedef detail::tvec2
< mediump_float
mediump_vec2
 
typedef detail::tvec2< lowp_floatlowp_vec2
 
typedef detail::tvec2< highp_inthighp_ivec2
 
typedef detail::tvec2
< mediump_int
mediump_ivec2
 
typedef detail::tvec2< lowp_intlowp_ivec2
 
typedef detail::tvec2< highp_uinthighp_uvec2
 
typedef detail::tvec2
< mediump_uint
mediump_uvec2
 
typedef detail::tvec2< lowp_uintlowp_uvec2
 
typedef detail::tvec3
< highp_float
highp_vec3
 
typedef detail::tvec3
< mediump_float
mediump_vec3
 
typedef detail::tvec3< lowp_floatlowp_vec3
 
typedef detail::tvec3< highp_inthighp_ivec3
 
typedef detail::tvec3
< mediump_int
mediump_ivec3
 
typedef detail::tvec3< lowp_intlowp_ivec3
 
typedef detail::tvec3< highp_uinthighp_uvec3
 
typedef detail::tvec3
< mediump_uint
mediump_uvec3
 
typedef detail::tvec3< lowp_uintlowp_uvec3
 
typedef detail::tvec4
< highp_float
highp_vec4
 
typedef detail::tvec4
< mediump_float
mediump_vec4
 
typedef detail::tvec4< lowp_floatlowp_vec4
 
typedef detail::tvec4< highp_inthighp_ivec4
 
typedef detail::tvec4
< mediump_int
mediump_ivec4
 
typedef detail::tvec4< lowp_intlowp_ivec4
 
typedef detail::tvec4< highp_uinthighp_uvec4
 
typedef detail::tvec4
< mediump_uint
mediump_uvec4
 
typedef detail::tvec4< lowp_uintlowp_uvec4
 
typedef detail::half half
 
typedef detail::tvec2
< detail::half
hvec2
 
typedef detail::tvec3
< detail::half
hvec3
 
typedef detail::tvec4
< detail::half
hvec4
 
typedef detail::tmat2x2
< detail::half
hmat2
 
typedef detail::tmat3x3
< detail::half
hmat3
 
typedef detail::tmat4x4
< detail::half
hmat4
 
typedef detail::tmat2x2
< detail::half
hmat2x2
 
typedef detail::tmat2x3
< detail::half
hmat2x3
 
typedef detail::tmat2x4
< detail::half
hmat2x4
 
typedef detail::tmat3x2
< detail::half
hmat3x2
 
typedef detail::tmat3x3
< detail::half
hmat3x3
 
typedef detail::tmat3x4
< detail::half
hmat3x4
 
typedef detail::tmat4x2
< detail::half
hmat4x2
 
typedef detail::tmat4x3
< detail::half
hmat4x3
 
typedef detail::tmat4x4
< detail::half
hmat4x4
 
typedef detail::tmat2x2
< highp_int
highp_imat2
 
typedef detail::tmat3x3
< highp_int
highp_imat3
 
typedef detail::tmat4x4
< highp_int
highp_imat4
 
typedef detail::tmat2x2
< highp_int
highp_imat2x2
 
typedef detail::tmat2x3
< highp_int
highp_imat2x3
 
typedef detail::tmat2x4
< highp_int
highp_imat2x4
 
typedef detail::tmat3x2
< highp_int
highp_imat3x2
 
typedef detail::tmat3x3
< highp_int
highp_imat3x3
 
typedef detail::tmat3x4
< highp_int
highp_imat3x4
 
typedef detail::tmat4x2
< highp_int
highp_imat4x2
 
typedef detail::tmat4x3
< highp_int
highp_imat4x3
 
typedef detail::tmat4x4
< highp_int
highp_imat4x4
 
typedef detail::tmat2x2
< mediump_int
mediump_imat2
 
typedef detail::tmat3x3
< mediump_int
mediump_imat3
 
typedef detail::tmat4x4
< mediump_int
mediump_imat4
 
typedef detail::tmat2x2
< mediump_int
mediump_imat2x2
 
typedef detail::tmat2x3
< mediump_int
mediump_imat2x3
 
typedef detail::tmat2x4
< mediump_int
mediump_imat2x4
 
typedef detail::tmat3x2
< mediump_int
mediump_imat3x2
 
typedef detail::tmat3x3
< mediump_int
mediump_imat3x3
 
typedef detail::tmat3x4
< mediump_int
mediump_imat3x4
 
typedef detail::tmat4x2
< mediump_int
mediump_imat4x2
 
typedef detail::tmat4x3
< mediump_int
mediump_imat4x3
 
typedef detail::tmat4x4
< mediump_int
mediump_imat4x4
 
typedef detail::tmat2x2< lowp_intlowp_imat2
 
typedef detail::tmat3x3< lowp_intlowp_imat3
 
typedef detail::tmat4x4< lowp_intlowp_imat4
 
typedef detail::tmat2x2< lowp_intlowp_imat2x2
 
typedef detail::tmat2x3< lowp_intlowp_imat2x3
 
typedef detail::tmat2x4< lowp_intlowp_imat2x4
 
typedef detail::tmat3x2< lowp_intlowp_imat3x2
 
typedef detail::tmat3x3< lowp_intlowp_imat3x3
 
typedef detail::tmat3x4< lowp_intlowp_imat3x4
 
typedef detail::tmat4x2< lowp_intlowp_imat4x2
 
typedef detail::tmat4x3< lowp_intlowp_imat4x3
 
typedef detail::tmat4x4< lowp_intlowp_imat4x4
 
typedef detail::tmat2x2
< highp_uint
highp_umat2
 
typedef detail::tmat3x3
< highp_uint
highp_umat3
 
typedef detail::tmat4x4
< highp_uint
highp_umat4
 
typedef detail::tmat2x2
< highp_uint
highp_umat2x2
 
typedef detail::tmat2x3
< highp_uint
highp_umat2x3
 
typedef detail::tmat2x4
< highp_uint
highp_umat2x4
 
typedef detail::tmat3x2
< highp_uint
highp_umat3x2
 
typedef detail::tmat3x3
< highp_uint
highp_umat3x3
 
typedef detail::tmat3x4
< highp_uint
highp_umat3x4
 
typedef detail::tmat4x2
< highp_uint
highp_umat4x2
 
typedef detail::tmat4x3
< highp_uint
highp_umat4x3
 
typedef detail::tmat4x4
< highp_uint
highp_umat4x4
 
typedef detail::tmat2x2
< mediump_uint
mediump_umat2
 
typedef detail::tmat3x3
< mediump_uint
mediump_umat3
 
typedef detail::tmat4x4
< mediump_uint
mediump_umat4
 
typedef detail::tmat2x2
< mediump_uint
mediump_umat2x2
 
typedef detail::tmat2x3
< mediump_uint
mediump_umat2x3
 
typedef detail::tmat2x4
< mediump_uint
mediump_umat2x4
 
typedef detail::tmat3x2
< mediump_uint
mediump_umat3x2
 
typedef detail::tmat3x3
< mediump_uint
mediump_umat3x3
 
typedef detail::tmat3x4
< mediump_uint
mediump_umat3x4
 
typedef detail::tmat4x2
< mediump_uint
mediump_umat4x2
 
typedef detail::tmat4x3
< mediump_uint
mediump_umat4x3
 
typedef detail::tmat4x4
< mediump_uint
mediump_umat4x4
 
typedef detail::tmat2x2
< lowp_uint
lowp_umat2
 
typedef detail::tmat3x3
< lowp_uint
lowp_umat3
 
typedef detail::tmat4x4
< lowp_uint
lowp_umat4
 
typedef detail::tmat2x2
< lowp_uint
lowp_umat2x2
 
typedef detail::tmat2x3
< lowp_uint
lowp_umat2x3
 
typedef detail::tmat2x4
< lowp_uint
lowp_umat2x4
 
typedef detail::tmat3x2
< lowp_uint
lowp_umat3x2
 
typedef detail::tmat3x3
< lowp_uint
lowp_umat3x3
 
typedef detail::tmat3x4
< lowp_uint
lowp_umat3x4
 
typedef detail::tmat4x2
< lowp_uint
lowp_umat4x2
 
typedef detail::tmat4x3
< lowp_uint
lowp_umat4x3
 
typedef detail::tmat4x4
< lowp_uint
lowp_umat4x4
 
typedef mediump_imat2 imat2
 
typedef mediump_imat3 imat3
 
typedef mediump_imat4 imat4
 
typedef mediump_imat2x2 imat2x2
 
typedef mediump_imat2x3 imat2x3
 
typedef mediump_imat2x4 imat2x4
 
typedef mediump_imat3x2 imat3x2
 
typedef mediump_imat3x3 imat3x3
 
typedef mediump_imat3x4 imat3x4
 
typedef mediump_imat4x2 imat4x2
 
typedef mediump_imat4x3 imat4x3
 
typedef mediump_imat4x4 imat4x4
 
typedef mediump_umat2 umat2
 
typedef mediump_umat3 umat3
 
typedef mediump_umat4 umat4
 
typedef mediump_umat2x2 umat2x2
 
typedef mediump_umat2x3 umat2x3
 
typedef mediump_umat2x4 umat2x4
 
typedef mediump_umat3x2 umat3x2
 
typedef mediump_umat3x3 umat3x3
 
typedef mediump_umat3x4 umat3x4
 
typedef mediump_umat4x2 umat4x2
 
typedef mediump_umat4x3 umat4x3
 
typedef mediump_umat4x4 umat4x4
 
typedef detail::tquat< float > quat
 
typedef detail::tquat
< detail::half
hquat
 
typedef detail::tquat< float > fquat
 
typedef detail::tquat< double > dquat
 
typedef detail::tquat< lowp_floatlowp_quat
 
typedef detail::tquat
< mediump_float
mediump_quat
 
typedef detail::tquat
< highp_float
highp_quat
 
typedef detail::int8 int8
 
typedef detail::int16 int16
 
typedef detail::int32 int32
 
typedef detail::int64 int64
 
typedef detail::int8 int8_t
 
typedef detail::int16 int16_t
 
typedef detail::int32 int32_t
 
typedef detail::int64 int64_t
 
typedef detail::int8 i8
 
typedef detail::int16 i16
 
typedef detail::int32 i32
 
typedef detail::int64 i64
 
typedef detail::tvec1< i8i8vec1
 
typedef detail::tvec2< i8i8vec2
 
typedef detail::tvec3< i8i8vec3
 
typedef detail::tvec4< i8i8vec4
 
typedef detail::tvec1< i16i16vec1
 
typedef detail::tvec2< i16i16vec2
 
typedef detail::tvec3< i16i16vec3
 
typedef detail::tvec4< i16i16vec4
 
typedef detail::tvec1< i32i32vec1
 
typedef detail::tvec2< i32i32vec2
 
typedef detail::tvec3< i32i32vec3
 
typedef detail::tvec4< i32i32vec4
 
typedef detail::tvec1< i64i64vec1
 
typedef detail::tvec2< i64i64vec2
 
typedef detail::tvec3< i64i64vec3
 
typedef detail::tvec4< i64i64vec4
 
typedef detail::uint8 uint8
 
typedef detail::uint16 uint16
 
typedef detail::uint32 uint32
 
typedef detail::uint64 uint64
 
typedef detail::uint8 uint8_t
 
typedef detail::uint16 uint16_t
 
typedef detail::uint32 uint32_t
 
typedef detail::uint64 uint64_t
 
typedef detail::uint8 u8
 
typedef detail::uint16 u16
 
typedef detail::uint32 u32
 
typedef detail::uint64 u64
 
typedef detail::tvec1< u8u8vec1
 
typedef detail::tvec2< u8u8vec2
 
typedef detail::tvec3< u8u8vec3
 
typedef detail::tvec4< u8u8vec4
 
typedef detail::tvec1< u16u16vec1
 
typedef detail::tvec2< u16u16vec2
 
typedef detail::tvec3< u16u16vec3
 
typedef detail::tvec4< u16u16vec4
 
typedef detail::tvec1< u32u32vec1
 
typedef detail::tvec2< u32u32vec2
 
typedef detail::tvec3< u32u32vec3
 
typedef detail::tvec4< u32u32vec4
 
typedef detail::tvec1< u64u64vec1
 
typedef detail::tvec2< u64u64vec2
 
typedef detail::tvec3< u64u64vec3
 
typedef detail::tvec4< u64u64vec4
 
typedef detail::float16 float16
 
typedef detail::float32 float32
 
typedef detail::float64 float64
 
typedef detail::float16 float16_t
 
typedef detail::float32 float32_t
 
typedef detail::float64 float64_t
 
typedef float16 f16
 
typedef float32 f32
 
typedef float64 f64
 
typedef detail::tvec1< float > fvec1
 
typedef detail::tvec2< float > fvec2
 
typedef detail::tvec3< float > fvec3
 
typedef detail::tvec4< float > fvec4
 
typedef detail::tvec1< f16f16vec1
 
typedef detail::tvec2< f16f16vec2
 
typedef detail::tvec3< f16f16vec3
 
typedef detail::tvec4< f16f16vec4
 
typedef detail::tvec1< f32f32vec1
 
typedef detail::tvec2< f32f32vec2
 
typedef detail::tvec3< f32f32vec3
 
typedef detail::tvec4< f32f32vec4
 
typedef detail::tvec1< f64f64vec1
 
typedef detail::tvec2< f64f64vec2
 
typedef detail::tvec3< f64f64vec3
 
typedef detail::tvec4< f64f64vec4
 
typedef detail::tmat2x2< f32fmat2
 
typedef detail::tmat3x3< f32fmat3
 
typedef detail::tmat4x4< f32fmat4
 
typedef detail::tmat2x2< f32fmat2x2
 
typedef detail::tmat2x3< f32fmat2x3
 
typedef detail::tmat2x4< f32fmat2x4
 
typedef detail::tmat3x2< f32fmat3x2
 
typedef detail::tmat3x3< f32fmat3x3
 
typedef detail::tmat3x4< f32fmat3x4
 
typedef detail::tmat4x2< f32fmat4x2
 
typedef detail::tmat4x3< f32fmat4x3
 
typedef detail::tmat4x4< f32fmat4x4
 
typedef detail::tmat2x2< f16f16mat2
 
typedef detail::tmat3x3< f16f16mat3
 
typedef detail::tmat4x4< f16f16mat4
 
typedef detail::tmat2x2< f16f16mat2x2
 
typedef detail::tmat2x3< f16f16mat2x3
 
typedef detail::tmat2x4< f16f16mat2x4
 
typedef detail::tmat3x2< f16f16mat3x2
 
typedef detail::tmat3x3< f16f16mat3x3
 
typedef detail::tmat3x4< f16f16mat3x4
 
typedef detail::tmat4x2< f16f16mat4x2
 
typedef detail::tmat4x3< f16f16mat4x3
 
typedef detail::tmat4x4< f16f16mat4x4
 
typedef detail::tmat2x2< f32f32mat2
 
typedef detail::tmat3x3< f32f32mat3
 
typedef detail::tmat4x4< f32f32mat4
 
typedef detail::tmat2x2< f32f32mat2x2
 
typedef detail::tmat2x3< f32f32mat2x3
 
typedef detail::tmat2x4< f32f32mat2x4
 
typedef detail::tmat3x2< f32f32mat3x2
 
typedef detail::tmat3x3< f32f32mat3x3
 
typedef detail::tmat3x4< f32f32mat3x4
 
typedef detail::tmat4x2< f32f32mat4x2
 
typedef detail::tmat4x3< f32f32mat4x3
 
typedef detail::tmat4x4< f32f32mat4x4
 
typedef detail::tmat2x2< f64f64mat2
 
typedef detail::tmat3x3< f64f64mat3
 
typedef detail::tmat4x4< f64f64mat4
 
typedef detail::tmat2x2< f64f64mat2x2
 
typedef detail::tmat2x3< f64f64mat2x3
 
typedef detail::tmat2x4< f64f64mat2x4
 
typedef detail::tmat3x2< f64f64mat3x2
 
typedef detail::tmat3x3< f64f64mat3x3
 
typedef detail::tmat3x4< f64f64mat3x4
 
typedef detail::tmat4x2< f64f64mat4x2
 
typedef detail::tmat4x3< f64f64mat4x3
 
typedef detail::tmat4x4< f64f64mat4x4
 
typedef detail::tquat< f16f16quat
 
typedef detail::tquat< f32f32quat
 
typedef detail::tquat< f64f64quat
 
typedef bool bool1
 boolean type with 1 component. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tvec2< bool > bool2
 boolean type with 2 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tvec3< bool > bool3
 boolean type with 3 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tvec4< bool > bool4
 boolean type with 4 components. (From GLM_GTX_compatibility extension) More...
 
typedef bool bool1x1
 boolean matrix with 1 x 1 component. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat2x2< bool > bool2x2
 boolean matrix with 2 x 2 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat2x3< bool > bool2x3
 boolean matrix with 2 x 3 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat2x4< bool > bool2x4
 boolean matrix with 2 x 4 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat3x2< bool > bool3x2
 boolean matrix with 3 x 2 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat3x3< bool > bool3x3
 boolean matrix with 3 x 3 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat3x4< bool > bool3x4
 boolean matrix with 3 x 4 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat4x2< bool > bool4x2
 boolean matrix with 4 x 2 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat4x3< bool > bool4x3
 boolean matrix with 4 x 3 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat4x4< bool > bool4x4
 boolean matrix with 4 x 4 components. (From GLM_GTX_compatibility extension) More...
 
typedef int int1
 integer vector with 1 component. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tvec2< intint2
 integer vector with 2 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tvec3< intint3
 integer vector with 3 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tvec4< intint4
 integer vector with 4 components. (From GLM_GTX_compatibility extension) More...
 
typedef int int1x1
 integer matrix with 1 component. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat2x2< intint2x2
 integer matrix with 2 x 2 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat2x3< intint2x3
 integer matrix with 2 x 3 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat2x4< intint2x4
 integer matrix with 2 x 4 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat3x2< intint3x2
 integer matrix with 3 x 2 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat3x3< intint3x3
 integer matrix with 3 x 3 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat3x4< intint3x4
 integer matrix with 3 x 4 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat4x2< intint4x2
 integer matrix with 4 x 2 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat4x3< intint4x3
 integer matrix with 4 x 3 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat4x4< intint4x4
 integer matrix with 4 x 4 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::half half1
 half-precision floating-point vector with 1 component. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tvec2
< detail::half
half2
 half-precision floating-point vector with 2 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tvec3
< detail::half
half3
 half-precision floating-point vector with 2 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tvec4
< detail::half
half4
 half-precision floating-point vector with 2 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::half half1x1
 half-precision floating-point matrix with 1 component. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat2x2
< detail::half
half2x2
 half-precision floating-point matrix with 2 x 2 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat2x3
< detail::half
half2x3
 half-precision floating-point matrix with 2 x 3 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat2x4
< detail::half
half2x4
 half-precision floating-point matrix with 2 x 4 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat3x2
< detail::half
half3x2
 half-precision floating-point matrix with 3 x 2 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat3x3
< detail::half
half3x3
 half-precision floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat3x4
< detail::half
half3x4
 half-precision floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat4x2
< detail::half
half4x2
 half-precision floating-point matrix with 4 x 2 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat4x3
< detail::half
half4x3
 half-precision floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat4x4
< detail::half
half4x4
 half-precision floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension) More...
 
typedef float float1
 single-precision floating-point vector with 1 component. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tvec2< float > float2
 single-precision floating-point vector with 2 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tvec3< float > float3
 single-precision floating-point vector with 3 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tvec4< float > float4
 single-precision floating-point vector with 4 components. (From GLM_GTX_compatibility extension) More...
 
typedef float float1x1
 single-precision floating-point matrix with 1 component. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat2x2< float > float2x2
 single-precision floating-point matrix with 2 x 2 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat2x3< float > float2x3
 single-precision floating-point matrix with 2 x 3 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat2x4< float > float2x4
 single-precision floating-point matrix with 2 x 4 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat3x2< float > float3x2
 single-precision floating-point matrix with 3 x 2 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat3x3< float > float3x3
 single-precision floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat3x4< float > float3x4
 single-precision floating-point matrix with 3 x 4 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat4x2< float > float4x2
 single-precision floating-point matrix with 4 x 2 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat4x3< float > float4x3
 single-precision floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat4x4< float > float4x4
 single-precision floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension) More...
 
typedef double double1
 double-precision floating-point vector with 1 component. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tvec2< double > double2
 double-precision floating-point vector with 2 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tvec3< double > double3
 double-precision floating-point vector with 3 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tvec4< double > double4
 double-precision floating-point vector with 4 components. (From GLM_GTX_compatibility extension) More...
 
typedef double double1x1
 double-precision floating-point matrix with 1 component. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat2x2< double > double2x2
 double-precision floating-point matrix with 2 x 2 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat2x3< double > double2x3
 double-precision floating-point matrix with 2 x 3 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat2x4< double > double2x4
 double-precision floating-point matrix with 2 x 4 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat3x2< double > double3x2
 double-precision floating-point matrix with 3 x 2 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat3x3< double > double3x3
 double-precision floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat3x4< double > double3x4
 double-precision floating-point matrix with 3 x 4 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat4x2< double > double4x2
 double-precision floating-point matrix with 4 x 2 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat4x3< double > double4x3
 double-precision floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension) More...
 
typedef detail::tmat4x4< double > double4x4
 double-precision floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension) More...
 
typedef signed int sint
 
typedef uint8 byte
 
typedef uint16 word
 
typedef uint32 dword
 
typedef uint64 qword
 
typedef detail::tvec2
< std::size_t
size2
 
typedef detail::tvec3
< std::size_t
size3
 
typedef detail::tvec4
< std::size_t
size4
 
typedef detail::tvec2
< std::size_t
size2_t
 
typedef detail::tvec3
< std::size_t
size3_t
 
typedef detail::tvec4
< std::size_t
size4_t
 
typedef detail::highp_vec1_t highp_vec1
 
typedef detail::mediump_vec1_t mediump_vec1
 
typedef detail::lowp_vec1_t lowp_vec1
 
typedef detail::highp_ivec1_t highp_ivec1
 
typedef detail::mediump_ivec1_t mediump_ivec1
 
typedef detail::lowp_ivec1_t lowp_ivec1
 
typedef detail::highp_uvec1_t highp_uvec1
 
typedef detail::mediump_uvec1_t mediump_uvec1
 
typedef detail::lowp_uvec1_t lowp_uvec1
 
typedef detail::tvec1< bool > bvec1
 
typedef mediump_vec1 vec1
 
typedef mediump_ivec1 ivec1
 
typedef mediump_uvec1 uvec1
 

Enumerations

enum  comp {
  X = 0,
  R = 0,
  S = 0,
  Y = 1,
  G = 1,
  T = 1,
  Z = 2,
  B = 2,
  P = 2,
  W = 3,
  A = 3,
  Q = 3
}
 
enum  profile {
  nice,
  fast,
  simd
}
 

Functions

template<typename genType >
GLM_FUNC_DECL genType abs (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType sign (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType floor (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType trunc (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType round (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType roundEven (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType ceil (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType fract (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType mod (genType const &x, genType const &y)
 
template<typename genType >
GLM_FUNC_DECL genType mod (genType const &x, typename genType::value_type const &y)
 
template<typename genType >
GLM_FUNC_DECL genType modf (genType const &x, genType &i)
 
template<typename genType >
GLM_FUNC_DECL genType min (genType const &x, genType const &y)
 
template<typename genType >
GLM_FUNC_DECL genType min (genType const &x, typename genType::value_type const &y)
 
template<typename genType >
GLM_FUNC_DECL genType max (genType const &x, genType const &y)
 
template<typename genType >
GLM_FUNC_DECL genType max (genType const &x, typename genType::value_type const &y)
 
template<typename genType >
GLM_FUNC_DECL genType clamp (genType const &x, genType const &minVal, genType const &maxVal)
 
template<typename genType >
GLM_FUNC_DECL genType clamp (genType const &x, typename genType::value_type const &minVal, typename genType::value_type const &maxVal)
 
template<typename genTypeT , typename genTypeU >
GLM_FUNC_DECL genTypeT mix (genTypeT const &x, genTypeT const &y, genTypeU const &a)
 
template<typename genType >
GLM_FUNC_DECL genType step (genType const &edge, genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType step (typename genType::value_type const &edge, genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType smoothstep (genType const &edge0, genType const &edge1, genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType smoothstep (typename genType::value_type const &edge0, typename genType::value_type const &edge1, genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType::bool_type isnan (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType::bool_type isinf (genType const &x)
 
template<typename genType , typename genIType >
GLM_FUNC_DECL genIType floatBitsToInt (genType const &value)
 
template<typename genType , typename genUType >
GLM_FUNC_DECL genUType floatBitsToUint (genType const &value)
 
template<typename genType , typename genIType >
GLM_FUNC_DECL genType intBitsToFloat (genIType const &value)
 
template<typename genType , typename genUType >
GLM_FUNC_DECL genType uintBitsToFloat (genUType const &value)
 
template<typename genType >
GLM_FUNC_DECL genType fma (genType const &a, genType const &b, genType const &c)
 
template<typename genType , typename genIType >
GLM_FUNC_DECL genType frexp (genType const &x, genIType &exp)
 
template<typename genType , typename genIType >
GLM_FUNC_DECL genType ldexp (genType const &x, genIType const &exp)
 
template<typename genFIType >
GLM_FUNC_QUALIFIER genFIType abs (genFIType const &x)
 
template<typename genFIType >
GLM_FUNC_QUALIFIER genFIType sign (genFIType const &x)
 
template<>
GLM_FUNC_QUALIFIER detail::half floor< detail::half > (detail::half const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType floor (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType trunc (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType round (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType roundEven (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType ceil (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType fract (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType mod (genType const &x, genType const &y)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType modf (genType const &x, genType &i)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec2< valType > 
modf (detail::tvec2< valType > const &x, detail::tvec2< valType > &i)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec3< valType > 
modf (detail::tvec3< valType > const &x, detail::tvec3< valType > &i)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec4< valType > 
modf (detail::tvec4< valType > const &x, detail::tvec4< valType > &i)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType min (genType const &x, genType const &y)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType max (genType const &x, genType const &y)
 
template<typename valType >
GLM_FUNC_QUALIFIER valType clamp (valType const &x, valType const &minVal, valType const &maxVal)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
clamp (detail::tvec2< T > const &x, typename detail::tvec2< T >::value_type const &minVal, typename detail::tvec2< T >::value_type const &maxVal)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
clamp (detail::tvec3< T > const &x, typename detail::tvec3< T >::value_type const &minVal, typename detail::tvec3< T >::value_type const &maxVal)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
clamp (detail::tvec4< T > const &x, typename detail::tvec4< T >::value_type const &minVal, typename detail::tvec4< T >::value_type const &maxVal)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
clamp (detail::tvec2< T > const &x, detail::tvec2< T > const &minVal, detail::tvec2< T > const &maxVal)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
clamp (detail::tvec3< T > const &x, detail::tvec3< T > const &minVal, detail::tvec3< T > const &maxVal)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
clamp (detail::tvec4< T > const &x, detail::tvec4< T > const &minVal, detail::tvec4< T > const &maxVal)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType mix (genType const &x, genType const &y, genType const &a)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec2< valType > 
mix (detail::tvec2< valType > const &x, detail::tvec2< valType > const &y, valType const &a)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec3< valType > 
mix (detail::tvec3< valType > const &x, detail::tvec3< valType > const &y, valType const &a)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec4< valType > 
mix (detail::tvec4< valType > const &x, detail::tvec4< valType > const &y, valType const &a)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec2< valType > 
mix (detail::tvec2< valType > const &x, detail::tvec2< valType > const &y, detail::tvec2< valType > const &a)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec3< valType > 
mix (detail::tvec3< valType > const &x, detail::tvec3< valType > const &y, detail::tvec3< valType > const &a)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec4< valType > 
mix (detail::tvec4< valType > const &x, detail::tvec4< valType > const &y, detail::tvec4< valType > const &a)
 
template<>
GLM_FUNC_QUALIFIER float mix (float const &x, float const &y, bool const &a)
 
template<>
GLM_FUNC_QUALIFIER double mix (double const &x, double const &y, bool const &a)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
mix (detail::tvec2< T > const &x, detail::tvec2< T > const &y, bool a)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
mix (detail::tvec3< T > const &x, detail::tvec3< T > const &y, bool a)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
mix (detail::tvec4< T > const &x, detail::tvec4< T > const &y, bool a)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
mix (detail::tvec2< T > const &x, detail::tvec2< T > const &y, typename detail::tvec2< T >::bool_type a)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
mix (detail::tvec3< T > const &x, detail::tvec3< T > const &y, typename detail::tvec3< T >::bool_type a)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
mix (detail::tvec4< T > const &x, detail::tvec4< T > const &y, typename detail::tvec4< T >::bool_type a)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType step (genType const &edge, genType const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
step (typename detail::tvec2< T >::value_type const &edge, detail::tvec2< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
step (typename detail::tvec3< T >::value_type const &edge, detail::tvec3< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
step (typename detail::tvec4< T >::value_type const &edge, detail::tvec4< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
step (detail::tvec2< T > const &edge, detail::tvec2< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
step (detail::tvec3< T > const &edge, detail::tvec3< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
step (detail::tvec4< T > const &edge, detail::tvec4< T > const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType smoothstep (genType const &edge0, genType const &edge1, genType const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
smoothstep (typename detail::tvec2< T >::value_type const &edge0, typename detail::tvec2< T >::value_type const &edge1, detail::tvec2< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
smoothstep (typename detail::tvec3< T >::value_type const &edge0, typename detail::tvec3< T >::value_type const &edge1, detail::tvec3< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
smoothstep (typename detail::tvec4< T >::value_type const &edge0, typename detail::tvec4< T >::value_type const &edge1, detail::tvec4< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
smoothstep (detail::tvec2< T > const &edge0, detail::tvec2< T > const &edge1, detail::tvec2< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
smoothstep (detail::tvec3< T > const &edge0, detail::tvec3< T > const &edge1, detail::tvec3< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
smoothstep (detail::tvec4< T > const &edge0, detail::tvec4< T > const &edge1, detail::tvec4< T > const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER bool isnan (genType const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T >::bool_type 
isnan (detail::tvec2< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T >::bool_type 
isnan (detail::tvec3< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T >::bool_type 
isnan (detail::tvec4< T > const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER bool isinf (genType const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T >::bool_type 
isinf (detail::tvec2< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T >::bool_type 
isinf (detail::tvec3< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T >::bool_type 
isinf (detail::tvec4< T > const &x)
 
GLM_FUNC_QUALIFIER int floatBitsToInt (float const &value)
 
GLM_FUNC_QUALIFIER
detail::tvec2< int
floatBitsToInt (detail::tvec2< float > const &value)
 
GLM_FUNC_QUALIFIER
detail::tvec3< int
floatBitsToInt (detail::tvec3< float > const &value)
 
GLM_FUNC_QUALIFIER
detail::tvec4< int
floatBitsToInt (detail::tvec4< float > const &value)
 
GLM_FUNC_QUALIFIER uint floatBitsToUint (float const &value)
 
GLM_FUNC_QUALIFIER
detail::tvec2< uint
floatBitsToUint (detail::tvec2< float > const &value)
 
GLM_FUNC_QUALIFIER
detail::tvec3< uint
floatBitsToUint (detail::tvec3< float > const &value)
 
GLM_FUNC_QUALIFIER
detail::tvec4< uint
floatBitsToUint (detail::tvec4< float > const &value)
 
GLM_FUNC_QUALIFIER float intBitsToFloat (int const &value)
 
GLM_FUNC_QUALIFIER
detail::tvec2< float > 
intBitsToFloat (detail::tvec2< int > const &value)
 
GLM_FUNC_QUALIFIER
detail::tvec3< float > 
intBitsToFloat (detail::tvec3< int > const &value)
 
GLM_FUNC_QUALIFIER
detail::tvec4< float > 
intBitsToFloat (detail::tvec4< int > const &value)
 
GLM_FUNC_QUALIFIER float uintBitsToFloat (uint const &value)
 
GLM_FUNC_QUALIFIER
detail::tvec2< float > 
uintBitsToFloat (detail::tvec2< uint > const &value)
 
GLM_FUNC_QUALIFIER
detail::tvec3< float > 
uintBitsToFloat (detail::tvec3< uint > const &value)
 
GLM_FUNC_QUALIFIER
detail::tvec4< float > 
uintBitsToFloat (detail::tvec4< uint > const &value)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType fma (genType const &a, genType const &b, genType const &c)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType frexp (genType const &x, int &exp)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
frexp (detail::tvec2< T > const &x, detail::tvec2< int > &exp)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
frexp (detail::tvec3< T > const &x, detail::tvec3< int > &exp)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
frexp (detail::tvec4< T > const &x, detail::tvec4< int > &exp)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType ldexp (genType const &x, int const &exp)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
ldexp (detail::tvec2< T > const &x, detail::tvec2< int > const &exp)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
ldexp (detail::tvec3< T > const &x, detail::tvec3< int > const &exp)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
ldexp (detail::tvec4< T > const &x, detail::tvec4< int > const &exp)
 
template<typename genType >
GLM_FUNC_DECL genType pow (genType const &base, genType const &exponent)
 
template<typename genType >
GLM_FUNC_DECL genType exp (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType log (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType exp2 (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType log2 (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType sqrt (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType inversesqrt (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType pow (genType const &x, genType const &y)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType exp (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType log (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType exp2 (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType log2 (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType sqrt (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType inversesqrt (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType::value_type length (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType::value_type distance (genType const &p0, genType const &p1)
 
template<typename genType >
GLM_FUNC_DECL genType::value_type dot (genType const &x, genType const &y)
 
template<typename valType >
GLM_FUNC_DECL detail::tvec3
< valType > 
cross (detail::tvec3< valType > const &x, detail::tvec3< valType > const &y)
 
template<typename genType >
GLM_FUNC_DECL genType normalize (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType faceforward (genType const &N, genType const &I, genType const &Nref)
 
template<typename genType >
GLM_FUNC_DECL genType reflect (genType const &I, genType const &N)
 
template<typename genType >
GLM_FUNC_DECL genType refract (genType const &I, genType const &N, typename genType::value_type const &eta)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType length (genType const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T >::value_type 
length (detail::tvec2< T > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T >::value_type 
length (detail::tvec3< T > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T >::value_type 
length (detail::tvec4< T > const &v)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType distance (genType const &p0, genType const &p1)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T >::value_type 
distance (detail::tvec2< T > const &p0, detail::tvec2< T > const &p1)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T >::value_type 
distance (detail::tvec3< T > const &p0, detail::tvec3< T > const &p1)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T >::value_type 
distance (detail::tvec4< T > const &p0, detail::tvec4< T > const &p1)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType dot (genType const &x, genType const &y)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T >::value_type 
dot (detail::tvec2< T > const &x, detail::tvec2< T > const &y)
 
template<typename T >
GLM_FUNC_QUALIFIER T dot (detail::tvec3< T > const &x, detail::tvec3< T > const &y)
 
template<typename T >
GLM_FUNC_QUALIFIER T dot (detail::tvec4< T > const &x, detail::tvec4< T > const &y)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
cross (detail::tvec3< T > const &x, detail::tvec3< T > const &y)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType normalize (genType const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
normalize (detail::tvec2< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
normalize (detail::tvec3< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
normalize (detail::tvec4< T > const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType faceforward (genType const &N, genType const &I, genType const &Nref)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType reflect (genType const &I, genType const &N)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType refract (genType const &I, genType const &N, genType const &eta)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType refract (genType const &I, genType const &N, typename genType::value_type const &eta)
 
template<typename genUType >
GLM_FUNC_DECL genUType uaddCarry (genUType const &x, genUType const &y, genUType &carry)
 
template<typename genUType >
GLM_FUNC_DECL genUType usubBorrow (genUType const &x, genUType const &y, genUType &borrow)
 
template<typename genUType >
GLM_FUNC_DECL void umulExtended (genUType const &x, genUType const &y, genUType &msb, genUType &lsb)
 
template<typename genIType >
GLM_FUNC_DECL void imulExtended (genIType const &x, genIType const &y, genIType &msb, genIType &lsb)
 
template<typename genIUType >
GLM_FUNC_DECL genIUType bitfieldExtract (genIUType const &Value, int const &Offset, int const &Bits)
 
template<typename genIUType >
GLM_FUNC_DECL genIUType bitfieldInsert (genIUType const &Base, genIUType const &Insert, int const &Offset, int const &Bits)
 
template<typename genIUType >
GLM_FUNC_DECL genIUType bitfieldReverse (genIUType const &Value)
 
template<typename T , template< typename > class genIUType>
GLM_FUNC_DECL genIUType< T >
::signed_type 
bitCount (genIUType< T > const &Value)
 
template<typename T , template< typename > class genIUType>
GLM_FUNC_DECL genIUType< T >
::signed_type 
findLSB (genIUType< T > const &Value)
 
template<typename T , template< typename > class genIUType>
GLM_FUNC_DECL genIUType< T >
::signed_type 
findMSB (genIUType< T > const &Value)
 
template<typename genUType >
GLM_FUNC_QUALIFIER genUType uaddCarry (genUType const &x, genUType const &y, genUType &Carry)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
uaddCarry (detail::tvec2< T > const &x, detail::tvec2< T > const &y, detail::tvec2< T > &Carry)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
uaddCarry (detail::tvec3< T > const &x, detail::tvec3< T > const &y, detail::tvec3< T > &Carry)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
uaddCarry (detail::tvec4< T > const &x, detail::tvec4< T > const &y, detail::tvec4< T > &Carry)
 
template<typename genUType >
GLM_FUNC_QUALIFIER genUType usubBorrow (genUType const &x, genUType const &y, genUType &Borrow)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
usubBorrow (detail::tvec2< T > const &x, detail::tvec2< T > const &y, detail::tvec2< T > &Borrow)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
usubBorrow (detail::tvec3< T > const &x, detail::tvec3< T > const &y, detail::tvec3< T > &Borrow)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
usubBorrow (detail::tvec4< T > const &x, detail::tvec4< T > const &y, detail::tvec4< T > &Borrow)
 
template<typename genUType >
GLM_FUNC_QUALIFIER void umulExtended (genUType const &x, genUType const &y, genUType &msb, genUType &lsb)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
umulExtended (detail::tvec2< T > const &x, detail::tvec2< T > const &y, detail::tvec2< T > &msb, detail::tvec2< T > &lsb)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
umulExtended (detail::tvec3< T > const &x, detail::tvec3< T > const &y, detail::tvec3< T > &msb, detail::tvec3< T > &lsb)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
umulExtended (detail::tvec4< T > const &x, detail::tvec4< T > const &y, detail::tvec4< T > &msb, detail::tvec4< T > &lsb)
 
template<typename genIType >
GLM_FUNC_QUALIFIER void imulExtended (genIType const &x, genIType const &y, genIType &msb, genIType &lsb)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
imulExtended (detail::tvec2< T > const &x, detail::tvec2< T > const &y, detail::tvec2< T > &msb, detail::tvec2< T > &lsb)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
imulExtended (detail::tvec3< T > const &x, detail::tvec3< T > const &y, detail::tvec3< T > &msb, detail::tvec3< T > &lsb)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
imulExtended (detail::tvec4< T > const &x, detail::tvec4< T > const &y, detail::tvec4< T > &msb, detail::tvec4< T > &lsb)
 
template<typename genIUType >
GLM_FUNC_QUALIFIER genIUType bitfieldExtract (genIUType const &Value, int const &Offset, int const &Bits)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
bitfieldExtract (detail::tvec2< T > const &Value, int const &Offset, int const &Bits)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
bitfieldExtract (detail::tvec3< T > const &Value, int const &Offset, int const &Bits)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
bitfieldExtract (detail::tvec4< T > const &Value, int const &Offset, int const &Bits)
 
template<typename genIUType >
GLM_FUNC_QUALIFIER genIUType bitfieldInsert (genIUType const &Base, genIUType const &Insert, int const &Offset, int const &Bits)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
bitfieldInsert (detail::tvec2< T > const &Base, detail::tvec2< T > const &Insert, int const &Offset, int const &Bits)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
bitfieldInsert (detail::tvec3< T > const &Base, detail::tvec3< T > const &Insert, int const &Offset, int const &Bits)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
bitfieldInsert (detail::tvec4< T > const &Base, detail::tvec4< T > const &Insert, int const &Offset, int const &Bits)
 
template<typename genIUType >
GLM_FUNC_QUALIFIER genIUType bitfieldReverse (genIUType const &Value)
 
template<typename genIUType >
GLM_FUNC_QUALIFIER int bitCount (genIUType const &Value)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< int
bitCount (detail::tvec2< T > const &value)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< int
bitCount (detail::tvec3< T > const &value)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< int
bitCount (detail::tvec4< T > const &value)
 
template<typename genIUType >
GLM_FUNC_QUALIFIER int findLSB (genIUType const &Value)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< int
findLSB (detail::tvec2< T > const &value)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< int
findLSB (detail::tvec3< T > const &value)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< int
findLSB (detail::tvec4< T > const &value)
 
template<typename genIUType >
GLM_FUNC_QUALIFIER int findMSB (genIUType const &Value)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< int
findMSB (detail::tvec2< T > const &value)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< int
findMSB (detail::tvec3< T > const &value)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< int
findMSB (detail::tvec4< T > const &value)
 
template<typename matType >
GLM_FUNC_DECL matType matrixCompMult (matType const &x, matType const &y)
 
template<typename vecType , typename matType >
GLM_FUNC_DECL matType outerProduct (vecType const &c, vecType const &r)
 
template<typename matType >
GLM_FUNC_DECL
matType::transpose_type 
transpose (matType const &x)
 
template<typename valType >
GLM_FUNC_DECL detail::tmat2x2
< valType >::value_type 
determinant (detail::tmat2x2< valType > const &m)
 
template<typename valType >
GLM_FUNC_DECL detail::tmat3x3
< valType >::value_type 
determinant (detail::tmat3x3< valType > const &m)
 
template<typename valType >
GLM_FUNC_DECL detail::tmat4x4
< valType >::value_type 
determinant (detail::tmat4x4< valType > const &m)
 
template<typename valType >
GLM_FUNC_DECL detail::tmat2x2
< valType > 
inverse (detail::tmat2x2< valType > const &m)
 
template<typename valType >
GLM_FUNC_DECL detail::tmat3x3
< valType > 
inverse (detail::tmat3x3< valType > const &m)
 
template<typename valType >
GLM_FUNC_DECL detail::tmat4x4
< valType > 
inverse (detail::tmat4x4< valType > const &m)
 
template<typename matType >
GLM_FUNC_QUALIFIER matType matrixCompMult (matType const &x, matType const &y)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat2x2< T
outerProduct (detail::tvec2< T > const &c, detail::tvec2< T > const &r)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x3< T
outerProduct (detail::tvec3< T > const &c, detail::tvec3< T > const &r)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
outerProduct (detail::tvec4< T > const &c, detail::tvec4< T > const &r)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat2x3< T
outerProduct (detail::tvec3< T > const &c, detail::tvec2< T > const &r)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x2< T
outerProduct (detail::tvec2< T > const &c, detail::tvec3< T > const &r)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat2x4< T
outerProduct (detail::tvec4< T > const &c, detail::tvec2< T > const &r)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x2< T
outerProduct (detail::tvec2< T > const &c, detail::tvec4< T > const &r)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x4< T
outerProduct (detail::tvec4< T > const &c, detail::tvec3< T > const &r)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x3< T
outerProduct (detail::tvec3< T > const &c, detail::tvec4< T > const &r)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat2x2< T
transpose (detail::tmat2x2< T > const &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x3< T
transpose (detail::tmat3x3< T > const &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
transpose (detail::tmat4x4< T > const &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat2x3< T
transpose (detail::tmat3x2< T > const &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x2< T
transpose (detail::tmat2x3< T > const &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat2x4< T
transpose (detail::tmat4x2< T > const &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x2< T
transpose (detail::tmat2x4< T > const &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x4< T
transpose (detail::tmat4x3< T > const &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x3< T
transpose (detail::tmat3x4< T > const &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat2x2< T >
::value_type 
determinant (detail::tmat2x2< T > const &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x3< T >
::value_type 
determinant (detail::tmat3x3< T > const &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T >
::value_type 
determinant (detail::tmat4x4< T > const &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat2x2< T
inverse (detail::tmat2x2< T > const &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x3< T
inverse (detail::tmat3x3< T > const &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
inverse (detail::tmat4x4< T > const &m)
 
template<typename genType >
GLM_FUNC_DECL genType::value_type noise1 (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL detail::tvec2
< typename genType::value_type > 
noise2 (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL detail::tvec3
< typename genType::value_type > 
noise3 (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL detail::tvec4
< typename genType::value_type > 
noise4 (genType const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER T noise1 (T const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
glm::detail::tvec2< T
noise2 (T const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
glm::detail::tvec3< T
noise3 (T const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
glm::detail::tvec4< T
noise4 (T const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER T noise1 (glm::detail::tvec2< T > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER T noise1 (detail::tvec3< T > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER T noise1 (detail::tvec4< T > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER
glm::detail::tvec2< T
noise2 (glm::detail::tvec2< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
glm::detail::tvec2< T
noise2 (glm::detail::tvec3< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
glm::detail::tvec2< T
noise2 (glm::detail::tvec4< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
glm::detail::tvec3< T
noise3 (glm::detail::tvec2< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
glm::detail::tvec3< T
noise3 (glm::detail::tvec3< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
glm::detail::tvec3< T
noise3 (glm::detail::tvec4< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
glm::detail::tvec4< T
noise4 (glm::detail::tvec2< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
glm::detail::tvec4< T
noise4 (glm::detail::tvec3< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
glm::detail::tvec4< T
noise4 (glm::detail::tvec4< T > const &x)
 
GLM_FUNC_DECL detail::uint32 packUnorm2x16 (detail::tvec2< detail::float32 > const &v)
 
GLM_FUNC_DECL detail::uint32 packSnorm2x16 (detail::tvec2< detail::float32 > const &v)
 
GLM_FUNC_DECL detail::uint32 packUnorm4x8 (detail::tvec4< detail::float32 > const &v)
 
GLM_FUNC_DECL detail::uint32 packSnorm4x8 (detail::tvec4< detail::float32 > const &v)
 
GLM_FUNC_DECL detail::tvec2
< detail::float32
unpackUnorm2x16 (detail::uint32 const &p)
 
GLM_FUNC_DECL detail::tvec2
< detail::float32
unpackSnorm2x16 (detail::uint32 const &p)
 
GLM_FUNC_DECL detail::tvec4
< detail::float32
unpackUnorm4x8 (detail::uint32 const &p)
 
GLM_FUNC_DECL detail::tvec4
< detail::float32
unpackSnorm4x8 (detail::uint32 const &p)
 
GLM_FUNC_DECL double packDouble2x32 (detail::tvec2< detail::uint32 > const &v)
 
GLM_FUNC_DECL detail::tvec2
< detail::uint32
unpackDouble2x32 (double const &v)
 
GLM_FUNC_DECL uint packHalf2x16 (vec2 const &v)
 
GLM_FUNC_DECL vec2 unpackHalf2x16 (uint const &v)
 
GLM_FUNC_QUALIFIER uint packHalf2x16 (detail::tvec2< float > const &v)
 
template<typename genType >
GLM_FUNC_DECL genType radians (genType const &degrees)
 
template<typename genType >
GLM_FUNC_DECL genType degrees (genType const &radians)
 
template<typename genType >
GLM_FUNC_DECL genType sin (genType const &angle)
 
template<typename genType >
GLM_FUNC_DECL genType cos (genType const &angle)
 
template<typename genType >
GLM_FUNC_DECL genType tan (genType const &angle)
 
template<typename genType >
GLM_FUNC_DECL genType asin (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType acos (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType atan (genType const &y, genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType atan (genType const &y_over_x)
 
template<typename genType >
GLM_FUNC_DECL genType sinh (genType const &angle)
 
template<typename genType >
GLM_FUNC_DECL genType cosh (genType const &angle)
 
template<typename genType >
GLM_FUNC_DECL genType tanh (genType const &angle)
 
template<typename genType >
GLM_FUNC_DECL genType asinh (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType acosh (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType atanh (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType radians (genType const &degrees)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType degrees (genType const &radians)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType sin (genType const &angle)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType cos (genType const &angle)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType tan (genType const &angle)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType asin (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType acos (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType atan (genType const &y, genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType atan (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType sinh (genType const &angle)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType cosh (genType const &angle)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType tanh (genType const &angle)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType asinh (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType acosh (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType atanh (genType const &x)
 
template<typename vecType >
GLM_FUNC_DECL vecType::bool_type lessThan (vecType const &x, vecType const &y)
 
template<typename vecType >
GLM_FUNC_DECL vecType::bool_type lessThanEqual (vecType const &x, vecType const &y)
 
template<typename vecType >
GLM_FUNC_DECL vecType::bool_type greaterThan (vecType const &x, vecType const &y)
 
template<typename vecType >
GLM_FUNC_DECL vecType::bool_type greaterThanEqual (vecType const &x, vecType const &y)
 
template<typename vecType >
GLM_FUNC_DECL vecType::bool_type equal (vecType const &x, vecType const &y)
 
template<typename vecType >
GLM_FUNC_DECL vecType::bool_type notEqual (vecType const &x, vecType const &y)
 
template<template< typename > class vecType>
GLM_FUNC_DECL bool any (vecType< bool > const &v)
 
template<template< typename > class vecType>
GLM_FUNC_DECL bool all (vecType< bool > const &v)
 
template<template< typename > class vecType>
GLM_FUNC_DECL vecType< bool > not_ (vecType< bool > const &v)
 
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< T >
::bool_type 
lessThan (vecType< T > const &x, vecType< T > const &y)
 
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< T >
::bool_type 
lessThanEqual (vecType< T > const &x, vecType< T > const &y)
 
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< T >
::bool_type 
greaterThan (vecType< T > const &x, vecType< T > const &y)
 
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< T >
::bool_type 
greaterThanEqual (vecType< T > const &x, vecType< T > const &y)
 
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< T >
::bool_type 
equal (vecType< T > const &x, vecType< T > const &y)
 
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< T >
::bool_type 
notEqual (vecType< T > const &x, vecType< T > const &y)
 
template<template< typename > class vecType>
GLM_FUNC_QUALIFIER bool any (vecType< bool > const &v)
 
template<template< typename > class vecType>
GLM_FUNC_QUALIFIER bool all (vecType< bool > const &v)
 
template<template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< bool > not_ (vecType< bool > const &v)
 
template<typename genType >
GLM_FUNC_DECL genType epsilon ()
 
template<typename genType >
GLM_FUNC_DECL genType zero ()
 
template<typename genType >
GLM_FUNC_DECL genType one ()
 
template<typename genType >
GLM_FUNC_DECL genType pi ()
 
template<typename genType >
GLM_FUNC_DECL genType root_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType half_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType quarter_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType one_over_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType two_over_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType two_over_root_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType one_over_root_two ()
 
template<typename genType >
GLM_FUNC_DECL genType root_half_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType root_two_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType root_ln_four ()
 
template<typename genType >
GLM_FUNC_DECL genType e ()
 
template<typename genType >
GLM_FUNC_DECL genType euler ()
 
template<typename genType >
GLM_FUNC_DECL genType root_two ()
 
template<typename genType >
GLM_FUNC_DECL genType root_three ()
 
template<typename genType >
GLM_FUNC_DECL genType root_five ()
 
template<typename genType >
GLM_FUNC_DECL genType ln_two ()
 
template<typename genType >
GLM_FUNC_DECL genType ln_ten ()
 
template<typename genType >
GLM_FUNC_DECL genType ln_ln_two ()
 
template<typename genType >
GLM_FUNC_DECL genType third ()
 
template<typename genType >
GLM_FUNC_DECL genType two_thirds ()
 
template<typename genType >
GLM_FUNC_DECL genType golden_ratio ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType epsilon ()
 
template<>
GLM_FUNC_QUALIFIER half epsilon ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType zero ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType one ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType pi ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType root_pi ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType half_pi ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType quarter_pi ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType one_over_pi ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType two_over_pi ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType two_over_root_pi ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType one_over_root_two ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType root_half_pi ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType root_two_pi ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType root_ln_four ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType e ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType euler ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType root_two ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType root_three ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType root_five ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType ln_two ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType ln_ten ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType ln_ln_two ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType third ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType two_thirds ()
 
template<typename genType >
GLM_FUNC_QUALIFIER genType golden_ratio ()
 
template<typename genType >
genType::boolType epsilonEqual (genType const &x, genType const &y, typename genType::value_type const &epsilon)
 
template<typename genType >
genType::boolType epsilonEqual (genType const &x, genType const &y, genType const &epsilon)
 
template<typename genType >
genType::boolType epsilonNotEqual (genType const &x, genType const &y, typename genType::value_type const &epsilon)
 
template<typename genType >
genType::boolType epsilonNotEqual (genType const &x, genType const &y, genType const &epsilon)
 
GLM_FUNC_QUALIFIER bool epsilonEqual (glm::half const &x, glm::half const &y, glm::half const &epsilon)
 
GLM_FUNC_QUALIFIER bool epsilonEqual (float const &x, float const &y, float const &epsilon)
 
GLM_FUNC_QUALIFIER bool epsilonEqual (double const &x, double const &y, double const &epsilon)
 
GLM_FUNC_QUALIFIER bool epsilonNotEqual (glm::half const &x, glm::half const &y, glm::half const &epsilon)
 
GLM_FUNC_QUALIFIER bool epsilonNotEqual (float const &x, float const &y, float const &epsilon)
 
GLM_FUNC_QUALIFIER bool epsilonNotEqual (double const &x, double const &y, double const &epsilon)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec2< bool > 
epsilonEqual (detail::tvec2< valType > const &x, detail::tvec2< valType > const &y, valType const &epsilon)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec2< bool > 
epsilonEqual (detail::tvec2< valType > const &x, detail::tvec2< valType > const &y, detail::tvec2< valType > const &epsilon)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec3< bool > 
epsilonEqual (detail::tvec3< valType > const &x, detail::tvec3< valType > const &y, valType const &epsilon)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec3< bool > 
epsilonEqual (detail::tvec3< valType > const &x, detail::tvec3< valType > const &y, detail::tvec3< valType > const &epsilon)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec4< bool > 
epsilonEqual (detail::tvec4< valType > const &x, detail::tvec4< valType > const &y, valType const &epsilon)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec4< bool > 
epsilonEqual (detail::tvec4< valType > const &x, detail::tvec4< valType > const &y, detail::tvec4< valType > const &epsilon)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec2< bool > 
epsilonNotEqual (detail::tvec2< valType > const &x, detail::tvec2< valType > const &y, valType const &epsilon)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec2< bool > 
epsilonNotEqual (detail::tvec2< valType > const &x, detail::tvec2< valType > const &y, detail::tvec2< valType > const &epsilon)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec3< bool > 
epsilonNotEqual (detail::tvec3< valType > const &x, detail::tvec3< valType > const &y, valType const &epsilon)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec3< bool > 
epsilonNotEqual (detail::tvec3< valType > const &x, detail::tvec3< valType > const &y, detail::tvec3< valType > const &epsilon)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec4< bool > 
epsilonNotEqual (detail::tvec4< valType > const &x, detail::tvec4< valType > const &y, valType const &epsilon)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec4< bool > 
epsilonNotEqual (detail::tvec4< valType > const &x, detail::tvec4< valType > const &y, detail::tvec4< valType > const &epsilon)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec4< bool > 
epsilonEqual (detail::tquat< valType > const &x, detail::tquat< valType > const &y, valType const &epsilon)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec4< bool > 
epsilonNotEqual (detail::tquat< valType > const &x, detail::tquat< valType > const &y, valType const &epsilon)
 
GLM_FUNC_DECL half abs (half const &x)
 
GLM_FUNC_DECL hvec2 abs (hvec2 const &x)
 
GLM_FUNC_DECL hvec3 abs (hvec3 const &x)
 
GLM_FUNC_DECL hvec4 abs (hvec4 const &x)
 
GLM_FUNC_DECL half mix (half const &x, half const &y, bool const &a)
 
template<typename genType >
genType::row_type row (genType const &m, int index)
 
template<typename genType >
genType row (genType const &m, int index, typename genType::row_type const &x)
 
template<typename genType >
genType::col_type column (genType const &m, int index)
 
template<typename genType >
genType column (genType const &m, int index, typename genType::col_type const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType row (genType const &m, int index, typename genType::row_type const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER
genType::row_type 
row (genType const &m, int index)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType column (genType const &m, int index, typename genType::col_type const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER
genType::col_type 
column (genType const &m, int index)
 
template<typename genType >
genType affineInverse (genType const &m)
 
template<typename genType >
GLM_FUNC_QUALIFIER
genType::value_type 
inverseTranspose (genType const &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x3< T
affineInverse (detail::tmat3x3< T > const &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
affineInverse (detail::tmat4x4< T > const &m)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat2x2< valType > 
inverseTranspose (detail::tmat2x2< valType > const &m)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat3x3< valType > 
inverseTranspose (detail::tmat3x3< valType > const &m)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat4x4< valType > 
inverseTranspose (detail::tmat4x4< valType > const &m)
 
template<typename T >
detail::tmat4x4< Ttranslate (detail::tmat4x4< T > const &m, detail::tvec3< T > const &v)
 
template<typename T >
detail::tmat4x4< Trotate (detail::tmat4x4< T > const &m, T const &angle, detail::tvec3< T > const &axis)
 
template<typename T >
detail::tmat4x4< Tscale (detail::tmat4x4< T > const &m, detail::tvec3< T > const &v)
 
template<typename T >
detail::tmat4x4< Tortho (T const &left, T const &right, T const &bottom, T const &top, T const &zNear, T const &zFar)
 
template<typename T >
detail::tmat4x4< Tortho (T const &left, T const &right, T const &bottom, T const &top)
 
template<typename T >
detail::tmat4x4< Tfrustum (T const &left, T const &right, T const &bottom, T const &top, T const &near, T const &far)
 
template<typename T >
detail::tmat4x4< Tperspective (T const &fovy, T const &aspect, T const &near, T const &far)
 
template<typename valType >
detail::tmat4x4< valType > perspectiveFov (valType const &fov, valType const &width, valType const &height, valType const &near, valType const &far)
 
template<typename T >
detail::tmat4x4< TinfinitePerspective (T fovy, T aspect, T near)
 
template<typename T >
detail::tmat4x4< TtweakedInfinitePerspective (T fovy, T aspect, T near)
 
template<typename T , typename U >
detail::tvec3< Tproject (detail::tvec3< T > const &obj, detail::tmat4x4< T > const &model, detail::tmat4x4< T > const &proj, detail::tvec4< U > const &viewport)
 
template<typename T , typename U >
detail::tvec3< TunProject (detail::tvec3< T > const &win, detail::tmat4x4< T > const &model, detail::tmat4x4< T > const &proj, detail::tvec4< U > const &viewport)
 
template<typename T , typename U >
detail::tmat4x4< TpickMatrix (detail::tvec2< T > const &center, detail::tvec2< T > const &delta, detail::tvec4< U > const &viewport)
 
template<typename T >
detail::tmat4x4< TlookAt (detail::tvec3< T > const &eye, detail::tvec3< T > const &center, detail::tvec3< T > const &up)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
translate (detail::tmat4x4< T > const &m, detail::tvec3< T > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
rotate (detail::tmat4x4< T > const &m, T const &angle, detail::tvec3< T > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
scale (detail::tmat4x4< T > const &m, detail::tvec3< T > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
translate_slow (detail::tmat4x4< T > const &m, detail::tvec3< T > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
rotate_slow (detail::tmat4x4< T > const &m, T const &angle, detail::tvec3< T > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
scale_slow (detail::tmat4x4< T > const &m, detail::tvec3< T > const &v)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat4x4< valType > 
ortho (valType const &left, valType const &right, valType const &bottom, valType const &top, valType const &zNear, valType const &zFar)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat4x4< valType > 
ortho (valType const &left, valType const &right, valType const &bottom, valType const &top)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat4x4< valType > 
frustum (valType const &left, valType const &right, valType const &bottom, valType const &top, valType const &nearVal, valType const &farVal)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat4x4< valType > 
perspective (valType const &fovy, valType const &aspect, valType const &zNear, valType const &zFar)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat4x4< valType > 
perspectiveFov (valType const &fov, valType const &width, valType const &height, valType const &zNear, valType const &zFar)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
infinitePerspective (T fovy, T aspect, T zNear)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
tweakedInfinitePerspective (T fovy, T aspect, T zNear)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec3< T
project (detail::tvec3< T > const &obj, detail::tmat4x4< T > const &model, detail::tmat4x4< T > const &proj, detail::tvec4< U > const &viewport)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec3< T
unProject (detail::tvec3< T > const &win, detail::tmat4x4< T > const &model, detail::tmat4x4< T > const &proj, detail::tvec4< U > const &viewport)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
lookAt (detail::tvec3< T > const &eye, detail::tvec3< T > const &center, detail::tvec3< T > const &up)
 
template<typename T , template< typename > class vecType>
T perlin (vecType< T > const &p)
 
template<typename T , template< typename > class vecType>
T perlin (vecType< T > const &p, vecType< T > const &rep)
 
template<typename T , template< typename > class vecType>
T simplex (vecType< T > const &p)
 
template<typename T >
GLM_FUNC_QUALIFIER T mod289 (T const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER T permute (T const &x)
 
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< Tpermute (vecType< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER T taylorInvSqrt (T const &r)
 
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< TtaylorInvSqrt (vecType< T > const &r)
 
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< Tfade (vecType< T > const &t)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
grad4 (T const &j, detail::tvec4< T > const &ip)
 
template<typename T >
GLM_FUNC_QUALIFIER T perlin (detail::tvec2< T > const &P)
 
template<typename T >
GLM_FUNC_QUALIFIER T perlin (detail::tvec3< T > const &P)
 
template<typename T >
GLM_FUNC_QUALIFIER T perlin (detail::tvec4< T > const &P)
 
template<typename T >
GLM_FUNC_QUALIFIER T perlin (detail::tvec2< T > const &P, detail::tvec2< T > const &rep)
 
template<typename T >
GLM_FUNC_QUALIFIER T perlin (detail::tvec3< T > const &P, detail::tvec3< T > const &rep)
 
template<typename T >
GLM_FUNC_QUALIFIER T perlin (detail::tvec4< T > const &P, detail::tvec4< T > const &rep)
 
template<typename T >
GLM_FUNC_QUALIFIER T simplex (glm::detail::tvec2< T > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER T simplex (detail::tvec3< T > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER T simplex (detail::tvec4< T > const &v)
 
template<typename T >
T length (detail::tquat< T > const &q)
 
template<typename T >
detail::tquat< Tnormalize (detail::tquat< T > const &q)
 
template<typename T >
T dot (detail::tquat< T > const &q1, detail::tquat< T > const &q2)
 
template<typename T >
detail::tquat< Tmix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
 
template<typename T >
detail::tquat< Tlerp (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
 
template<typename T >
detail::tquat< Tslerp (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
 Returns the slurp interpolation between two quaternions. More...
 
template<typename T >
detail::tquat< Tconjugate (detail::tquat< T > const &q)
 
template<typename T >
detail::tquat< Tinverse (detail::tquat< T > const &q)
 
template<typename T >
detail::tquat< Trotate (detail::tquat< T > const &q, typename detail::tquat< T >::value_type const &angle, detail::tvec3< T > const &axis)
 
template<typename T >
detail::tvec3< TeulerAngles (detail::tquat< T > const &x)
 
template<typename valType >
valType roll (detail::tquat< valType > const &x)
 
template<typename valType >
valType pitch (detail::tquat< valType > const &x)
 
template<typename valType >
valType yaw (detail::tquat< valType > const &x)
 
template<typename T >
detail::tmat3x3< Tmat3_cast (detail::tquat< T > const &x)
 
template<typename T >
detail::tmat4x4< Tmat4_cast (detail::tquat< T > const &x)
 
template<typename T >
detail::tquat< Tquat_cast (detail::tmat3x3< T > const &x)
 
template<typename T >
detail::tquat< Tquat_cast (detail::tmat4x4< T > const &x)
 
template<typename valType >
valType angle (detail::tquat< valType > const &x)
 
template<typename valType >
detail::tvec3< valType > axis (detail::tquat< valType > const &x)
 
template<typename valType >
detail::tquat< valType > angleAxis (valType const &angle, valType const &x, valType const &y, valType const &z)
 
template<typename valType >
detail::tquat< valType > angleAxis (valType const &angle, detail::tvec3< valType > const &axis)
 
template<typename T >
GLM_FUNC_QUALIFIER T length (detail::tquat< T > const &q)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tquat< T
normalize (detail::tquat< T > const &q)
 
template<typename T >
GLM_FUNC_QUALIFIER T dot (detail::tquat< T > const &q1, detail::tquat< T > const &q2)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tquat< T
cross (detail::tquat< T > const &q1, detail::tquat< T > const &q2)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tquat< T
mix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tquat< T
lerp (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tquat< T
slerp (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tquat< T
conjugate (detail::tquat< T > const &q)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tquat< T
inverse (detail::tquat< T > const &q)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tquat< T
rotate (detail::tquat< T > const &q, typename detail::tquat< T >::value_type const &angle, detail::tvec3< T > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
eulerAngles (detail::tquat< T > const &x)
 
template<typename valType >
GLM_FUNC_QUALIFIER valType roll (detail::tquat< valType > const &q)
 
template<typename valType >
GLM_FUNC_QUALIFIER valType pitch (detail::tquat< valType > const &q)
 
template<typename valType >
GLM_FUNC_QUALIFIER valType yaw (detail::tquat< valType > const &q)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x3< T
mat3_cast (detail::tquat< T > const &q)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
mat4_cast (detail::tquat< T > const &q)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tquat< T
quat_cast (detail::tmat3x3< T > const &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tquat< T
quat_cast (detail::tmat4x4< T > const &m4)
 
template<typename T >
GLM_FUNC_QUALIFIER T angle (detail::tquat< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
axis (detail::tquat< T > const &x)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tquat< valType > 
angleAxis (valType const &angle, valType const &x, valType const &y, valType const &z)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tquat< valType > 
angleAxis (valType const &angle, detail::tvec3< valType > const &v)
 
template<typename genType >
genType linearRand (genType const &Min, genType const &Max)
 
template<typename genType >
genType gaussRand (genType const &Mean, genType const &Deviation)
 
template<typename T >
detail::tvec2< TcircularRand (T const &Radius)
 
template<typename T >
detail::tvec3< TsphericalRand (T const &Radius)
 
template<typename T >
detail::tvec2< TdiskRand (T const &Radius)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
ballRand (T const &Radius)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType linearRand (genType const &Min, genType const &Max)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType gaussRand (genType const &Mean, genType const &Deviation)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
diskRand (T const &Radius)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
circularRand (T const &Radius)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
sphericalRand (T const &Radius)
 
template<typename genType >
genType sec (genType const &angle)
 
template<typename genType >
genType csc (genType const &angle)
 
template<typename genType >
genType cot (genType const &angle)
 
template<typename genType >
genType asec (genType const &x)
 
template<typename genType >
genType acsc (genType const &x)
 
template<typename genType >
genType acot (genType const &x)
 
template<typename genType >
genType sech (genType const &angle)
 
template<typename genType >
genType csch (genType const &angle)
 
template<typename genType >
genType coth (genType const &angle)
 
template<typename genType >
genType asech (genType const &x)
 
template<typename genType >
genType acsch (genType const &x)
 
template<typename genType >
genType acoth (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType sec (genType const &angle)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType csc (genType const &angle)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType cot (genType const &angle)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType asec (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType acsc (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType acot (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType sech (genType const &angle)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType csch (genType const &angle)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType coth (genType const &angle)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType asech (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType acsch (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType acoth (genType const &x)
 
template<typename T , template< typename > class vecType>
T const & swizzle (vecType< T > const &v, comp x)
 
template<typename T , template< typename > class vecType>
detail::tvec2< T > const & swizzle (vecType< T > const &v, comp x, comp y)
 
template<typename T , template< typename > class vecType>
detail::tvec3< T > const & swizzle (vecType< T > const &v, comp x, comp y, comp z)
 
template<typename T , template< typename > class vecType>
detail::tvec4< T > const & swizzle (vecType< T > const &v, comp x, comp y, comp z, comp w)
 
template<typename T , template< typename > class vecType>
Tswizzle (vecType< T > &v, comp x)
 
template<typename T , template< typename > class vecType>
detail::tref2< Tswizzle (vecType< T > &v, comp x, comp y)
 
template<typename T , template< typename > class vecType>
detail::tref3< Tswizzle (vecType< T > &v, comp x, comp y, comp z)
 
template<typename T , template< typename > class vecType>
detail::tref4< Tswizzle (vecType< T > &v, comp x, comp y, comp z, comp w)
 
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER T swizzle (vecType< T > const &v, comp x)
 
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER
detail::tvec2< T
swizzle (vecType< T > const &v, comp x, comp y)
 
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER
detail::tvec3< T
swizzle (vecType< T > const &v, comp x, comp y, comp z)
 
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER
detail::tvec4< T
swizzle (vecType< T > const &v, comp x, comp y, comp z, comp w)
 
template<typename T >
GLM_FUNC_QUALIFIER Tswizzle (detail::tvec4< T > &v, comp x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tref2< T
swizzle (detail::tvec4< T > &v, comp x, comp y)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tref3< T
swizzle (detail::tvec4< T > &v, comp x, comp y, comp z)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tref4< T
swizzle (detail::tvec4< T > &v, comp x, comp y, comp z, comp w)
 
template<typename genType >
genType::value_type const * value_ptr (genType const &vec)
 
template<typename T >
detail::tvec2< Tmake_vec2 (T const *const ptr)
 
template<typename T >
detail::tvec3< Tmake_vec3 (T const *const ptr)
 
template<typename T >
detail::tvec4< Tmake_vec4 (T const *const ptr)
 
template<typename T >
detail::tmat2x2< Tmake_mat2x2 (T const *const ptr)
 
template<typename T >
detail::tmat2x3< Tmake_mat2x3 (T const *const ptr)
 
template<typename T >
detail::tmat2x4< Tmake_mat2x4 (T const *const ptr)
 
template<typename T >
detail::tmat3x2< Tmake_mat3x2 (T const *const ptr)
 
template<typename T >
detail::tmat3x3< Tmake_mat3x3 (T const *const ptr)
 
template<typename T >
detail::tmat3x4< Tmake_mat3x4 (T const *const ptr)
 
template<typename T >
detail::tmat4x2< Tmake_mat4x2 (T const *const ptr)
 
template<typename T >
detail::tmat4x3< Tmake_mat4x3 (T const *const ptr)
 
template<typename T >
detail::tmat4x4< Tmake_mat4x4 (T const *const ptr)
 
template<typename T >
detail::tmat2x2< Tmake_mat2 (T const *const ptr)
 
template<typename T >
detail::tmat3x3< Tmake_mat3 (T const *const ptr)
 
template<typename T >
detail::tmat4x4< Tmake_mat4 (T const *const ptr)
 
template<typename T >
detail::tquat< Tmake_quat (T const *const ptr)
 
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tvec2< T > const &vec)
 
template<typename T >
GLM_FUNC_QUALIFIER Tvalue_ptr (detail::tvec2< T > &vec)
 
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tvec3< T > const &vec)
 
template<typename T >
GLM_FUNC_QUALIFIER Tvalue_ptr (detail::tvec3< T > &vec)
 
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tvec4< T > const &vec)
 
template<typename T >
GLM_FUNC_QUALIFIER Tvalue_ptr (detail::tvec4< T > &vec)
 
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat2x2< T > const &mat)
 
template<typename T >
GLM_FUNC_QUALIFIER Tvalue_ptr (detail::tmat2x2< T > &mat)
 
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat3x3< T > const &mat)
 
template<typename T >
GLM_FUNC_QUALIFIER Tvalue_ptr (detail::tmat3x3< T > &mat)
 
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat4x4< T > const &mat)
 
template<typename T >
GLM_FUNC_QUALIFIER Tvalue_ptr (detail::tmat4x4< T > &mat)
 
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat2x3< T > const &mat)
 
template<typename T >
GLM_FUNC_QUALIFIER Tvalue_ptr (detail::tmat2x3< T > &mat)
 
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat3x2< T > const &mat)
 
template<typename T >
GLM_FUNC_QUALIFIER Tvalue_ptr (detail::tmat3x2< T > &mat)
 
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat2x4< T > const &mat)
 
template<typename T >
GLM_FUNC_QUALIFIER Tvalue_ptr (detail::tmat2x4< T > &mat)
 
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat4x2< T > const &mat)
 
template<typename T >
GLM_FUNC_QUALIFIER Tvalue_ptr (detail::tmat4x2< T > &mat)
 
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat3x4< T > const &mat)
 
template<typename T >
GLM_FUNC_QUALIFIER Tvalue_ptr (detail::tmat3x4< T > &mat)
 
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat4x3< T > const &mat)
 
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tquat< T > const &q)
 
template<typename T >
GLM_FUNC_QUALIFIER Tvalue_ptr (detail::tmat4x3< T > &mat)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
make_vec2 (T const *const ptr)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
make_vec3 (T const *const ptr)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
make_vec4 (T const *const ptr)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat2x2< T
make_mat2x2 (T const *const ptr)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat2x3< T
make_mat2x3 (T const *const ptr)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat2x4< T
make_mat2x4 (T const *const ptr)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x2< T
make_mat3x2 (T const *const ptr)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x3< T
make_mat3x3 (T const *const ptr)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x4< T
make_mat3x4 (T const *const ptr)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x2< T
make_mat4x2 (T const *const ptr)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x3< T
make_mat4x3 (T const *const ptr)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
make_mat4x4 (T const *const ptr)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat2x2< T
make_mat2 (T const *const ptr)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x3< T
make_mat3 (T const *const ptr)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
make_mat4 (T const *const ptr)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tquat< T
make_quat (T const *const ptr)
 
template<typename genType >
genType next_float (genType const &x)
 
template<typename genType >
genType prev_float (genType const &x)
 
template<typename genType >
genType next_float (genType const &x, uint const &Distance)
 
template<typename genType >
genType prev_float (genType const &x, uint const &Distance)
 
template<typename T >
uint float_distance (T const &x, T const &y)
 
template<typename T , template< typename > class vecType>
vecType< uintfloat_distance (vecType< T > const &x, vecType< T > const &y)
 
GLM_FUNC_QUALIFIER float next_float (float const &x)
 
GLM_FUNC_QUALIFIER double next_float (double const &x)
 
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< Tnext_float (vecType< T > const &x)
 
GLM_FUNC_QUALIFIER float prev_float (float const &x)
 
GLM_FUNC_QUALIFIER double prev_float (double const &x)
 
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< Tprev_float (vecType< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER T next_float (T const &x, uint const &ulps)
 
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< Tnext_float (vecType< T > const &x, vecType< uint > const &ulps)
 
template<typename T >
GLM_FUNC_QUALIFIER T prev_float (T const &x, uint const &ulps)
 
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< Tprev_float (vecType< T > const &x, vecType< uint > const &ulps)
 
template<typename T >
GLM_FUNC_QUALIFIER uint float_distance (T const &x, T const &y)
 
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< uintfloat_distance (vecType< T > const &x, vecType< T > const &y)
 
template<typename genTypeT , typename genTypeU >
genTypeU associatedMin (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b)
 
template<typename genTypeT , typename genTypeU >
genTypeU associatedMin (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c)
 
template<typename genTypeT , typename genTypeU >
genTypeU associatedMin (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c, const genTypeT &w, const genTypeU &d)
 
template<typename genTypeT , typename genTypeU >
genTypeU associatedMax (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b)
 
template<typename genTypeT , typename genTypeU >
genTypeU associatedMax (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c)
 
template<typename genTypeT , typename genTypeU >
genTypeU associatedMax (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c, const genTypeT &w, const genTypeU &d)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIERassociatedMin (T x, U a, T y, U b)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec2< U > 
associatedMin (const detail::tvec2< T > &x, const detail::tvec2< U > &a, const detail::tvec2< T > &y, const detail::tvec2< U > &b)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec3< U > 
associatedMin (const detail::tvec3< T > &x, const detail::tvec3< U > &a, const detail::tvec3< T > &y, const detail::tvec3< U > &b)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec4< U > 
associatedMin (const detail::tvec4< T > &x, const detail::tvec4< U > &a, const detail::tvec4< T > &y, const detail::tvec4< U > &b)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec2< U > 
associatedMin (T x, const detail::tvec2< U > &a, T y, const detail::tvec2< U > &b)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec3< U > 
associatedMin (T x, const detail::tvec3< U > &a, T y, const detail::tvec3< U > &b)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec4< U > 
associatedMin (T x, const detail::tvec4< U > &a, T y, const detail::tvec4< U > &b)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec2< U > 
associatedMin (const detail::tvec2< T > &x, U a, const detail::tvec2< T > &y, U b)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec3< U > 
associatedMin (const detail::tvec3< T > &x, U a, const detail::tvec3< T > &y, U b)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec4< U > 
associatedMin (const detail::tvec4< T > &x, U a, const detail::tvec4< T > &y, U b)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIERassociatedMin (T x, U a, T y, U b, T z, U c)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec2< U > 
associatedMin (const detail::tvec2< T > &x, const detail::tvec2< U > &a, const detail::tvec2< T > &y, const detail::tvec2< U > &b, const detail::tvec2< T > &z, const detail::tvec2< U > &c)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec3< U > 
associatedMin (const detail::tvec3< T > &x, const detail::tvec3< U > &a, const detail::tvec3< T > &y, const detail::tvec3< U > &b, const detail::tvec3< T > &z, const detail::tvec3< U > &c)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec4< U > 
associatedMin (const detail::tvec4< T > &x, const detail::tvec4< U > &a, const detail::tvec4< T > &y, const detail::tvec4< U > &b, const detail::tvec4< T > &z, const detail::tvec4< U > &c)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIERassociatedMin (T x, U a, T y, U b, T z, U c, T w, U d)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec2< U > 
associatedMin (const detail::tvec2< T > &x, const detail::tvec2< U > &a, const detail::tvec2< T > &y, const detail::tvec2< U > &b, const detail::tvec2< T > &z, const detail::tvec2< U > &c, const detail::tvec2< T > &w, const detail::tvec2< U > &d)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec3< U > 
associatedMin (const detail::tvec3< T > &x, const detail::tvec3< U > &a, const detail::tvec3< T > &y, const detail::tvec3< U > &b, const detail::tvec3< T > &z, const detail::tvec3< U > &c, const detail::tvec3< T > &w, const detail::tvec3< U > &d)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec4< U > 
associatedMin (const detail::tvec4< T > &x, const detail::tvec4< U > &a, const detail::tvec4< T > &y, const detail::tvec4< U > &b, const detail::tvec4< T > &z, const detail::tvec4< U > &c, const detail::tvec4< T > &w, const detail::tvec4< U > &d)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec2< U > 
associatedMin (T x, const detail::tvec2< U > &a, T y, const detail::tvec2< U > &b, T z, const detail::tvec2< U > &c, T w, const detail::tvec2< U > &d)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec3< U > 
associatedMin (T x, const detail::tvec3< U > &a, T y, const detail::tvec3< U > &b, T z, const detail::tvec3< U > &c, T w, const detail::tvec3< U > &d)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec4< U > 
associatedMin (T x, const detail::tvec4< U > &a, T y, const detail::tvec4< U > &b, T z, const detail::tvec4< U > &c, T w, const detail::tvec4< U > &d)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec2< U > 
associatedMin (const detail::tvec2< T > &x, U a, const detail::tvec2< T > &y, U b, const detail::tvec2< T > &z, U c, const detail::tvec2< T > &w, U d)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec3< U > 
associatedMin (const detail::tvec3< T > &x, U a, const detail::tvec3< T > &y, U b, const detail::tvec3< T > &z, U c, const detail::tvec3< T > &w, U d)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec4< U > 
associatedMin (const detail::tvec4< T > &x, U a, const detail::tvec4< T > &y, U b, const detail::tvec4< T > &z, U c, const detail::tvec4< T > &w, U d)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIERassociatedMax (T x, U a, T y, U b)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec2< U > 
associatedMax (const detail::tvec2< T > &x, const detail::tvec2< U > &a, const detail::tvec2< T > &y, const detail::tvec2< U > &b)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec3< U > 
associatedMax (const detail::tvec3< T > &x, const detail::tvec3< U > &a, const detail::tvec3< T > &y, const detail::tvec3< U > &b)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec4< U > 
associatedMax (const detail::tvec4< T > &x, const detail::tvec4< U > &a, const detail::tvec4< T > &y, const detail::tvec4< U > &b)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec2< U > 
associatedMax (T x, const detail::tvec2< U > &a, T y, const detail::tvec2< U > &b)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec3< U > 
associatedMax (T x, const detail::tvec3< U > &a, T y, const detail::tvec3< U > &b)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec4< U > 
associatedMax (T x, const detail::tvec4< U > &a, T y, const detail::tvec4< U > &b)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec2< U > 
associatedMax (const detail::tvec2< T > &x, U a, const detail::tvec2< T > &y, U b)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec3< U > 
associatedMax (const detail::tvec3< T > &x, U a, const detail::tvec3< T > &y, U b)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec4< U > 
associatedMax (const detail::tvec4< T > &x, U a, const detail::tvec4< T > &y, U b)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIERassociatedMax (T x, U a, T y, U b, T z, U c)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec2< U > 
associatedMax (const detail::tvec2< T > &x, const detail::tvec2< U > &a, const detail::tvec2< T > &y, const detail::tvec2< U > &b, const detail::tvec2< T > &z, const detail::tvec2< U > &c)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec3< U > 
associatedMax (const detail::tvec3< T > &x, const detail::tvec3< U > &a, const detail::tvec3< T > &y, const detail::tvec3< U > &b, const detail::tvec3< T > &z, const detail::tvec3< U > &c)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec4< U > 
associatedMax (const detail::tvec4< T > &x, const detail::tvec4< U > &a, const detail::tvec4< T > &y, const detail::tvec4< U > &b, const detail::tvec4< T > &z, const detail::tvec4< U > &c)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec2< U > 
associatedMax (T x, const detail::tvec2< U > &a, T y, const detail::tvec2< U > &b, T z, const detail::tvec2< U > &c)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec3< U > 
associatedMax (T x, const detail::tvec3< U > &a, T y, const detail::tvec3< U > &b, T z, const detail::tvec3< U > &c)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec4< U > 
associatedMax (T x, const detail::tvec4< U > &a, T y, const detail::tvec4< U > &b, T z, const detail::tvec4< U > &c)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec2< U > 
associatedMax (const detail::tvec2< T > &x, U a, const detail::tvec2< T > &y, U b, const detail::tvec2< T > &z, U c)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec3< U > 
associatedMax (const detail::tvec3< T > &x, U a, const detail::tvec3< T > &y, U b, const detail::tvec3< T > &z, U c)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec4< U > 
associatedMax (const detail::tvec4< T > &x, U a, const detail::tvec4< T > &y, U b, const detail::tvec4< T > &z, U c)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIERassociatedMax (T x, U a, T y, U b, T z, U c, T w, U d)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec2< U > 
associatedMax (const detail::tvec2< T > &x, const detail::tvec2< U > &a, const detail::tvec2< T > &y, const detail::tvec2< U > &b, const detail::tvec2< T > &z, const detail::tvec2< U > &c, const detail::tvec2< T > &w, const detail::tvec2< U > &d)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec3< U > 
associatedMax (const detail::tvec3< T > &x, const detail::tvec3< U > &a, const detail::tvec3< T > &y, const detail::tvec3< U > &b, const detail::tvec3< T > &z, const detail::tvec3< U > &c, const detail::tvec3< T > &w, const detail::tvec3< U > &d)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec4< U > 
associatedMax (const detail::tvec4< T > &x, const detail::tvec4< U > &a, const detail::tvec4< T > &y, const detail::tvec4< U > &b, const detail::tvec4< T > &z, const detail::tvec4< U > &c, const detail::tvec4< T > &w, const detail::tvec4< U > &d)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec2< U > 
associatedMax (T x, const detail::tvec2< U > &a, T y, const detail::tvec2< U > &b, T z, const detail::tvec2< U > &c, T w, const detail::tvec2< U > &d)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec3< U > 
associatedMax (T x, const detail::tvec3< U > &a, T y, const detail::tvec3< U > &b, T z, const detail::tvec3< U > &c, T w, const detail::tvec3< U > &d)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec4< U > 
associatedMax (T x, const detail::tvec4< U > &a, T y, const detail::tvec4< U > &b, T z, const detail::tvec4< U > &c, T w, const detail::tvec4< U > &d)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec2< U > 
associatedMax (const detail::tvec2< T > &x, U a, const detail::tvec2< T > &y, U b, const detail::tvec2< T > &z, U c, const detail::tvec2< T > &w, U d)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec3< U > 
associatedMax (const detail::tvec3< T > &x, U a, const detail::tvec3< T > &y, U b, const detail::tvec3< T > &z, U c, const detail::tvec3< T > &w, U d)
 
template<typename T , typename U >
GLM_FUNC_QUALIFIER
detail::tvec4< U > 
associatedMax (const detail::tvec4< T > &x, U a, const detail::tvec4< T > &y, U b, const detail::tvec4< T > &z, U c, const detail::tvec4< T > &w, U d)
 
template<typename genIType >
genIType mask (genIType const &count)
 
template<typename genIUType , typename sizeType >
GLM_DEPRECATED genIUType extractField (genIUType const &v, sizeType const &first, sizeType const &count)
 
template<typename genType >
GLM_DEPRECATED int lowestBit (genType const &value)
 
template<typename genType >
GLM_DEPRECATED int highestBit (genType const &value)
 
template<typename genType >
genType highestBitValue (genType const &value)
 
template<typename genType >
bool isPowerOfTwo (genType const &value)
 
template<typename genType >
genType powerOfTwoAbove (genType const &value)
 
template<typename genType >
genType powerOfTwoBelow (genType const &value)
 
template<typename genType >
genType powerOfTwoNearest (genType const &value)
 
template<typename genType >
GLM_DEPRECATED genType bitRevert (genType const &value)
 
template<typename genType >
genType bitRotateRight (genType const &In, std::size_t Shift)
 
template<typename genType >
genType bitRotateLeft (genType const &In, std::size_t Shift)
 
template<typename genIUType >
genIUType fillBitfieldWithOne (genIUType const &Value, int const &FromBit, int const &ToBit)
 
template<typename genIUType >
genIUType fillBitfieldWithZero (genIUType const &Value, int const &FromBit, int const &ToBit)
 
template<typename genIType >
GLM_FUNC_QUALIFIER genIType mask (genIType const &count)
 
template<typename genIType >
GLM_FUNC_QUALIFIER genIType extractField (half const &value, genIType const &first, genIType const &count)
 
template<typename genIType >
GLM_FUNC_QUALIFIER genIType extractField (float const &value, genIType const &first, genIType const &count)
 
template<typename genIType >
GLM_FUNC_QUALIFIER genIType extractField (double const &value, genIType const &first, genIType const &count)
 
template<typename genIUType , typename sizeType >
GLM_FUNC_QUALIFIER genIUType extractField (genIUType const &Value, sizeType const &First, sizeType const &Count)
 
template<typename genIUType , typename sizeType >
GLM_FUNC_QUALIFIER
detail::tvec2< genIUType > 
extractField (detail::tvec2< genIUType > const &value, sizeType const &first, sizeType const &count)
 
template<typename genIUType , typename sizeType >
GLM_FUNC_QUALIFIER
detail::tvec3< genIUType > 
extractField (detail::tvec3< genIUType > const &value, sizeType const &first, sizeType const &count)
 
template<typename genIUType , typename sizeType >
GLM_FUNC_QUALIFIER
detail::tvec4< genIUType > 
extractField (detail::tvec4< genIUType > const &value, sizeType const &first, sizeType const &count)
 
template<typename genIUType , typename sizeType >
GLM_FUNC_QUALIFIER
detail::tvec2< genIUType > 
extractField (detail::tvec2< genIUType > const &value, detail::tvec2< sizeType > const &first, detail::tvec2< sizeType > const &count)
 
template<typename genIUType , typename sizeType >
GLM_FUNC_QUALIFIER
detail::tvec3< genIUType > 
extractField (detail::tvec3< genIUType > const &value, detail::tvec3< sizeType > const &first, detail::tvec3< sizeType > const &count)
 
template<typename genIUType , typename sizeType >
GLM_FUNC_QUALIFIER
detail::tvec4< genIUType > 
extractField (detail::tvec4< genIUType > const &value, detail::tvec4< sizeType > const &first, detail::tvec4< sizeType > const &count)
 
template<typename genIUType , typename sizeType >
GLM_FUNC_QUALIFIER
detail::tvec2< genIUType > 
extractField (genIUType const &value, detail::tvec2< sizeType > const &first, detail::tvec2< sizeType > const &count)
 
template<typename genIUType , typename sizeType >
GLM_FUNC_QUALIFIER
detail::tvec3< genIUType > 
extractField (genIUType const &value, detail::tvec3< sizeType > const &first, detail::tvec3< sizeType > const &count)
 
template<typename genIUType , typename sizeType >
GLM_FUNC_QUALIFIER
detail::tvec4< genIUType > 
extractField (genIUType const &value, detail::tvec4< sizeType > const &first, detail::tvec4< sizeType > const &count)
 
template<typename genType >
GLM_FUNC_QUALIFIER int lowestBit (genType const &Value)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec2< int
lowestBit (detail::tvec2< valType > const &value)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec3< int
lowestBit (detail::tvec3< valType > const &value)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec4< int
lowestBit (detail::tvec4< valType > const &value)
 
template<typename genType >
GLM_FUNC_QUALIFIER int highestBit (genType const &value)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec2< int
highestBit (detail::tvec2< valType > const &value)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec3< int
highestBit (detail::tvec3< valType > const &value)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec4< int
highestBit (detail::tvec4< valType > const &value)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType highestBitValue (genType const &value)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec2< int
highestBitValue (detail::tvec2< valType > const &value)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec3< int
highestBitValue (detail::tvec3< valType > const &value)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec4< int
highestBitValue (detail::tvec4< valType > const &value)
 
template<typename genType >
GLM_FUNC_QUALIFIER bool isPowerOfTwo (genType const &Value)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec2< bool > 
isPowerOfTwo (detail::tvec2< valType > const &value)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec3< bool > 
isPowerOfTwo (detail::tvec3< valType > const &value)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec4< bool > 
isPowerOfTwo (detail::tvec4< valType > const &value)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType powerOfTwoAbove (genType const &value)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType powerOfTwoBelow (genType const &value)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType powerOfTwoNearest (genType const &value)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType bitRevert (genType const &In)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType bitRotateRight (genType const &In, std::size_t Shift)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec2< valType > 
bitRotateRight (detail::tvec2< valType > const &Value, std::size_t Shift)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec3< valType > 
bitRotateRight (detail::tvec3< valType > const &Value, std::size_t Shift)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec4< valType > 
bitRotateRight (detail::tvec4< valType > const &Value, std::size_t Shift)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType bitRotateLeft (genType const &In, std::size_t Shift)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec2< valType > 
bitRotateLeft (detail::tvec2< valType > const &Value, std::size_t Shift)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec3< valType > 
bitRotateLeft (detail::tvec3< valType > const &Value, std::size_t Shift)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec4< valType > 
bitRotateLeft (detail::tvec4< valType > const &Value, std::size_t Shift)
 
template<typename genIUType >
GLM_FUNC_QUALIFIER genIUType fillBitfieldWithOne (genIUType const &Value, int const &FromBit, int const &ToBit)
 
template<typename genIUType >
GLM_FUNC_QUALIFIER genIUType fillBitfieldWithZero (genIUType const &Value, int const &FromBit, int const &ToBit)
 
template<typename T >
detail::tvec3< TclosestPointOnLine (detail::tvec3< T > const &point, detail::tvec3< T > const &a, detail::tvec3< T > const &b)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec3< valType > 
closestPointOnLine (detail::tvec3< valType > const &point, detail::tvec3< valType > const &a, detail::tvec3< valType > const &b)
 
template<typename valType >
uint8 u8channel_cast (valType a)
 
template<typename valType >
uint16 u16channel_cast (valType a)
 
template<typename T >
uint32 u32_rgbx_cast (const detail::tvec3< T > &c)
 Conversion of a 3 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
uint32 u32_xrgb_cast (const detail::tvec3< T > &c)
 Conversion of a 3 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
uint32 u32_bgrx_cast (const detail::tvec3< T > &c)
 Conversion of a 3 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
uint32 u32_xbgr_cast (const detail::tvec3< T > &c)
 Conversion of a 3 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
uint32 u32_rgba_cast (const detail::tvec4< T > &c)
 Conversion of a 4 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
uint32 u32_argb_cast (const detail::tvec4< T > &c)
 Conversion of a 4 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
uint32 u32_bgra_cast (const detail::tvec4< T > &c)
 Conversion of a 4 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
uint32 u32_abgr_cast (const detail::tvec4< T > &c)
 Conversion of a 4 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
uint64 u64_rgbx_cast (const detail::tvec3< T > &c)
 Conversion of a 3 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
uint64 u64_xrgb_cast (const detail::tvec3< T > &c)
 Conversion of a 3 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
uint64 u64_bgrx_cast (const detail::tvec3< T > &c)
 Conversion of a 3 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
uint64 u64_xbgr_cast (const detail::tvec3< T > &c)
 Conversion of a 3 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
uint64 u64_rgba_cast (const detail::tvec4< T > &c)
 Conversion of a 4 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
uint64 u64_argb_cast (const detail::tvec4< T > &c)
 Conversion of a 4 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
uint64 u64_bgra_cast (const detail::tvec4< T > &c)
 Conversion of a 4 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
uint64 u64_abgr_cast (const detail::tvec4< T > &c)
 Conversion of a 4 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f16 f16_channel_cast (T a)
 Conversion of a u8 or u16 value to a single channel floating value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f16vec3 f16_rgbx_cast (T c)
 Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f16vec3 f16_xrgb_cast (T c)
 Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f16vec3 f16_bgrx_cast (T c)
 Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f16vec3 f16_xbgr_cast (T c)
 Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f16vec4 f16_rgba_cast (T c)
 Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f16vec4 f16_argb_cast (T c)
 Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f16vec4 f16_bgra_cast (T c)
 Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f16vec4 f16_abgr_cast (T c)
 Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f32 f32_channel_cast (T a)
 Conversion of a u8 or u16 value to a single channel floating value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f32vec3 f32_rgbx_cast (T c)
 Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f32vec3 f32_xrgb_cast (T c)
 Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f32vec3 f32_bgrx_cast (T c)
 Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f32vec3 f32_xbgr_cast (T c)
 Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f32vec4 f32_rgba_cast (T c)
 Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f32vec4 f32_argb_cast (T c)
 Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f32vec4 f32_bgra_cast (T c)
 Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f32vec4 f32_abgr_cast (T c)
 Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f64 f64_channel_cast (T a)
 Conversion of a u8 or u16 value to a single channel floating value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f64vec3 f64_rgbx_cast (T c)
 Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f64vec3 f64_xrgb_cast (T c)
 Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f64vec3 f64_bgrx_cast (T c)
 Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f64vec3 f64_xbgr_cast (T c)
 Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f64vec4 f64_rgba_cast (T c)
 Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f64vec4 f64_argb_cast (T c)
 Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f64vec4 f64_bgra_cast (T c)
 Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
f64vec4 f64_abgr_cast (T c)
 Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
GLM_FUNC_QUALIFIER uint8 u8channel_cast (T a)
 
template<typename T >
GLM_FUNC_QUALIFIER uint16 u16channel_cast (T a)
 
template<typename T >
GLM_FUNC_QUALIFIER uint32 u32_rgbx_cast (const detail::tvec3< T > &c)
 Conversion of a 3 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
GLM_FUNC_QUALIFIER uint32 u32_xrgb_cast (const detail::tvec3< T > &c)
 Conversion of a 3 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
GLM_FUNC_QUALIFIER uint32 u32_bgrx_cast (const detail::tvec3< T > &c)
 Conversion of a 3 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
GLM_FUNC_QUALIFIER uint32 u32_xbgr_cast (const detail::tvec3< T > &c)
 Conversion of a 3 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
GLM_FUNC_QUALIFIER uint32 u32_rgba_cast (const detail::tvec4< T > &c)
 Conversion of a 4 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
GLM_FUNC_QUALIFIER uint32 u32_argb_cast (const detail::tvec4< T > &c)
 Conversion of a 4 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
GLM_FUNC_QUALIFIER uint32 u32_bgra_cast (const detail::tvec4< T > &c)
 Conversion of a 4 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
GLM_FUNC_QUALIFIER uint32 u32_abgr_cast (const detail::tvec4< T > &c)
 Conversion of a 4 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
GLM_FUNC_QUALIFIER uint64 u64_rgbx_cast (const detail::tvec3< T > &c)
 Conversion of a 3 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
GLM_FUNC_QUALIFIER uint64 u32_xrgb_cast (const detail::tvec3< T > &c)
 Conversion of a 3 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
GLM_FUNC_QUALIFIER uint64 u32_bgrx_cast (const detail::tvec3< T > &c)
 Conversion of a 3 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
GLM_FUNC_QUALIFIER uint64 u32_xbgr_cast (const detail::tvec3< T > &c)
 Conversion of a 3 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
GLM_FUNC_QUALIFIER uint64 u64_rgba_cast (const detail::tvec4< T > &c)
 Conversion of a 4 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
GLM_FUNC_QUALIFIER uint64 u64_argb_cast (const detail::tvec4< T > &c)
 Conversion of a 4 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
GLM_FUNC_QUALIFIER uint64 u64_bgra_cast (const detail::tvec4< T > &c)
 Conversion of a 4 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<typename T >
GLM_FUNC_QUALIFIER uint64 u64_abgr_cast (const detail::tvec4< T > &c)
 Conversion of a 4 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension) More...
 
template<>
GLM_FUNC_QUALIFIER f16 f16_channel_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER f16vec3 f16_rgbx_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER f16vec3 f16_xrgb_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER f16vec3 f16_bgrx_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER f16vec3 f16_xbgr_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER f16vec4 f16_rgba_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER f16vec4 f16_argb_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER f16vec4 f16_bgra_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER f16vec4 f16_abgr_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER float f32_channel_cast< uint8 > (uint8 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec3< float > 
f32_rgbx_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec3< float > 
f32_xrgb_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec3< float > 
f32_bgrx_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec3< float > 
f32_xbgr_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec4< float > 
f32_rgba_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec4< float > 
f32_argb_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec4< float > 
f32_bgra_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec4< float > 
f32_abgr_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER double f64_channel_cast< uint8 > (uint8 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec3< double > 
f64_rgbx_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec3< double > 
f64_xrgb_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec3< double > 
f64_bgrx_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec3< double > 
f64_xbgr_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec4< double > 
f64_rgba_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec4< double > 
f64_argb_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec4< double > 
f64_bgra_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec4< double > 
f64_abgr_cast< uint32 > (uint32 color)
 
template<>
GLM_FUNC_QUALIFIER detail::half f16_channel_cast< uint16 > (uint16 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec3< detail::half
f16_rgbx_cast< uint64 > (uint64 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec3< detail::half
f16_xrgb_cast< uint64 > (uint64 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec3< detail::half
f16_bgrx_cast< uint64 > (uint64 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec3< detail::half
f16_xbgr_cast< uint64 > (uint64 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec4< detail::half
f16_rgba_cast< uint64 > (uint64 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec4< detail::half
f16_argb_cast< uint64 > (uint64 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec4< detail::half
f16_bgra_cast< uint64 > (uint64 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec4< detail::half
f16_abgr_cast< uint64 > (uint64 color)
 
template<>
GLM_FUNC_QUALIFIER float f32_channel_cast< uint16 > (uint16 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec3< float > 
f32_rgbx_cast< uint64 > (uint64 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec3< float > 
f32_xrgb_cast< uint64 > (uint64 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec3< float > 
f32_bgrx_cast< uint64 > (uint64 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec3< float > 
f32_xbgr_cast< uint64 > (uint64 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec4< float > 
f32_rgba_cast< uint64 > (uint64 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec4< float > 
f32_argb_cast< uint64 > (uint64 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec4< float > 
f32_bgra_cast< uint64 > (uint64 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec4< float > 
f32_abgr_cast< uint64 > (uint64 color)
 
template<>
GLM_FUNC_QUALIFIER double f64_channel_cast< uint16 > (uint16 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec3< double > 
f64_rgbx_cast< uint64 > (uint64 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec3< double > 
f64_xrgb_cast< uint64 > (uint64 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec3< double > 
f64_bgrx_cast< uint64 > (uint64 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec3< double > 
f64_xbgr_cast< uint64 > (uint64 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec4< double > 
f64_rgba_cast< uint64 > (uint64 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec4< double > 
f64_argb_cast< uint64 > (uint64 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec4< double > 
f64_bgra_cast< uint64 > (uint64 color)
 
template<>
GLM_FUNC_QUALIFIER
detail::tvec4< double > 
f64_abgr_cast< uint64 > (uint64 color)
 
template<typename valType >
detail::tvec3< valType > rgbColor (detail::tvec3< valType > const &hsvValue)
 
template<typename valType >
detail::tvec3< valType > hsvColor (detail::tvec3< valType > const &rgbValue)
 
template<typename valType >
detail::tmat4x4< valType > saturation (valType const s)
 
template<typename valType >
detail::tvec3< valType > saturation (valType const s, detail::tvec3< valType > const &color)
 
template<typename valType >
detail::tvec4< valType > saturation (valType const s, detail::tvec4< valType > const &color)
 
template<typename valType >
valType luminosity (detail::tvec3< valType > const &color)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
rgbColor (const detail::tvec3< T > &hsvColor)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
hsvColor (const detail::tvec3< T > &rgbColor)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
saturation (const T s)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
saturation (const T s, const detail::tvec3< T > &color)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
saturation (const T s, const detail::tvec4< T > &color)
 
template<typename T >
GLM_FUNC_QUALIFIER T luminosity (const detail::tvec3< T > &color)
 
template<typename valType >
detail::tvec3< valType > rgb2YCoCg (detail::tvec3< valType > const &rgbColor)
 
template<typename valType >
detail::tvec3< valType > YCoCg2rgb (detail::tvec3< valType > const &YCoCgColor)
 
template<typename valType >
detail::tvec3< valType > rgb2YCoCgR (detail::tvec3< valType > const &rgbColor)
 
template<typename valType >
detail::tvec3< valType > YCoCgR2rgb (detail::tvec3< valType > const &YCoCgColor)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec3< valType > 
rgb2YCoCg (detail::tvec3< valType > const &rgbColor)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec3< valType > 
rgb2YCoCgR (detail::tvec3< valType > const &rgbColor)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec3< valType > 
YCoCg2rgb (detail::tvec3< valType > const &YCoCgColor)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec3< valType > 
YCoCgR2rgb (detail::tvec3< valType > const &YCoCgRColor)
 
template<typename T >
GLM_FUNC_QUALIFIER T lerp (T x, T y, T a)
 Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility) More...
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
lerp (const detail::tvec2< T > &x, const detail::tvec2< T > &y, T a)
 Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility) More...
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
lerp (const detail::tvec3< T > &x, const detail::tvec3< T > &y, T a)
 Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility) More...
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
lerp (const detail::tvec4< T > &x, const detail::tvec4< T > &y, T a)
 Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility) More...
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
lerp (const detail::tvec2< T > &x, const detail::tvec2< T > &y, const detail::tvec2< T > &a)
 Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using vector a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility) More...
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
lerp (const detail::tvec3< T > &x, const detail::tvec3< T > &y, const detail::tvec3< T > &a)
 Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using vector a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility) More...
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
lerp (const detail::tvec4< T > &x, const detail::tvec4< T > &y, const detail::tvec4< T > &a)
 Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using vector a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility) More...
 
template<typename T >
GLM_FUNC_QUALIFIER T slerp (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
 Returns the slurp interpolation between two quaternions. More...
 
template<typename T >
GLM_FUNC_QUALIFIER T saturate (T x)
 Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility) More...
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
saturate (const detail::tvec2< T > &x)
 Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility) More...
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
saturate (const detail::tvec3< T > &x)
 Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility) More...
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
saturate (const detail::tvec4< T > &x)
 Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility) More...
 
template<typename T >
GLM_FUNC_QUALIFIER T atan2 (T x, T y)
 Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility) More...
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
atan2 (const detail::tvec2< T > &x, const detail::tvec2< T > &y)
 Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility) More...
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
atan2 (const detail::tvec3< T > &x, const detail::tvec3< T > &y)
 Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility) More...
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
atan2 (const detail::tvec4< T > &x, const detail::tvec4< T > &y)
 Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility) More...
 
template<typename genType >
bool isfinite (genType const &x)
 Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility) More...
 
template<typename valType >
detail::tvec2< bool > isfinite (const detail::tvec2< valType > &x)
 Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility) More...
 
template<typename valType >
detail::tvec3< bool > isfinite (const detail::tvec3< valType > &x)
 Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility) More...
 
template<typename valType >
detail::tvec4< bool > isfinite (const detail::tvec4< valType > &x)
 Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility) More...
 
template<typename genType >
GLM_FUNC_QUALIFIER bool isfinite (genType const &x)
 Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility) More...
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec2< bool > 
isfinite (detail::tvec2< valType > const &x)
 Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility) More...
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec3< bool > 
isfinite (detail::tvec3< valType > const &x)
 Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility) More...
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec4< bool > 
isfinite (detail::tvec4< valType > const &x)
 Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility) More...
 
template<typename genType >
genType::value_type compAdd (genType const &v)
 
template<typename genType >
genType::value_type compMul (genType const &v)
 
template<typename genType >
genType::value_type compMin (genType const &v)
 
template<typename genType >
genType::value_type compMax (genType const &v)
 
template<typename genType >
GLM_FUNC_QUALIFIER
genType::value_type 
compAdd (genType const &v)
 
template<typename genType >
GLM_FUNC_QUALIFIER
genType::value_type 
compMul (genType const &v)
 
template<typename genType >
GLM_FUNC_QUALIFIER
genType::value_type 
compMin (genType const &v)
 
template<typename genType >
GLM_FUNC_QUALIFIER
genType::value_type 
compMax (genType const &v)
 
template<typename valType >
detail::tmat4x4< valType > eulerAngleX (valType const &angleX)
 
template<typename valType >
detail::tmat4x4< valType > eulerAngleY (valType const &angleY)
 
template<typename valType >
detail::tmat4x4< valType > eulerAngleZ (valType const &angleZ)
 
template<typename valType >
detail::tmat4x4< valType > eulerAngleXY (valType const &angleX, valType const &angleY)
 
template<typename valType >
detail::tmat4x4< valType > eulerAngleYX (valType const &angleY, valType const &angleX)
 
template<typename valType >
detail::tmat4x4< valType > eulerAngleXZ (valType const &angleX, valType const &angleZ)
 
template<typename valType >
detail::tmat4x4< valType > eulerAngleZX (valType const &angleZ, valType const &angleX)
 
template<typename valType >
detail::tmat4x4< valType > eulerAngleYZ (valType const &angleY, valType const &angleZ)
 
template<typename valType >
detail::tmat4x4< valType > eulerAngleZY (valType const &angleZ, valType const &angleY)
 
template<typename valType >
detail::tmat4x4< valType > eulerAngleYXZ (valType const &yaw, valType const &pitch, valType const &roll)
 
template<typename valType >
detail::tmat4x4< valType > yawPitchRoll (valType const &yaw, valType const &pitch, valType const &roll)
 
template<typename T >
detail::tmat2x2< Torientate2 (T const &angle)
 
template<typename T >
detail::tmat3x3< Torientate3 (T const &angle)
 
template<typename T >
detail::tmat3x3< Torientate3 (detail::tvec3< T > const &angles)
 
template<typename T >
detail::tmat4x4< Torientate4 (detail::tvec3< T > const &angles)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat4x4< valType > 
eulerAngleX (valType const &angleX)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat4x4< valType > 
eulerAngleY (valType const &angleY)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat4x4< valType > 
eulerAngleZ (valType const &angleZ)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat4x4< valType > 
eulerAngleXY (valType const &angleX, valType const &angleY)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat4x4< valType > 
eulerAngleYX (valType const &angleY, valType const &angleX)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat4x4< valType > 
eulerAngleXZ (valType const &angleX, valType const &angleZ)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat4x4< valType > 
eulerAngleZX (valType const &angleZ, valType const &angleX)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat4x4< valType > 
eulerAngleYXZ (valType const &yaw, valType const &pitch, valType const &roll)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat4x4< valType > 
yawPitchRoll (valType const &yaw, valType const &pitch, valType const &roll)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat2x2< valType > 
orientate2 (valType const &angle)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat3x3< valType > 
orientate3 (valType const &angle)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat3x3< valType > 
orientate3 (detail::tvec3< valType > const &angles)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat4x4< valType > 
orientate4 (detail::tvec3< valType > const &angles)
 
template<typename genType >
genType extend (genType const &Origin, genType const &Source, typename genType::value_type const Length)
 
template<typename genType >
genType extend (genType const &Origin, genType const &Source, genType const &Distance)
 
template<typename valType >
detail::tvec2< valType > extend (detail::tvec2< valType > const &Origin, detail::tvec2< valType > const &Source, valType const &Distance)
 
template<typename valType >
detail::tvec3< valType > extend (detail::tvec3< valType > const &Origin, detail::tvec3< valType > const &Source, valType const &Distance)
 
template<typename valType >
detail::tvec4< valType > extend (detail::tvec4< valType > const &Origin, detail::tvec4< valType > const &Source, valType const &Distance)
 
template<typename T >
T min (T const &x, T const &y, T const &z)
 
template<typename T , template< typename > class C>
C< Tmin (C< T > const &x, typename C< T >::value_type const &y, typename C< T >::value_type const &z)
 
template<typename T , template< typename > class C>
C< Tmin (C< T > const &x, C< T > const &y, C< T > const &z)
 
template<typename T >
T min (T const &x, T const &y, T const &z, T const &w)
 
template<typename T , template< typename > class C>
C< Tmin (C< T > const &x, typename C< T >::value_type const &y, typename C< T >::value_type const &z, typename C< T >::value_type const &w)
 
template<typename T , template< typename > class C>
C< Tmin (C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)
 
template<typename T >
T max (T const &x, T const &y, T const &z)
 
template<typename T , template< typename > class C>
C< Tmax (C< T > const &x, typename C< T >::value_type const &y, typename C< T >::value_type const &z)
 
template<typename T , template< typename > class C>
C< Tmax (C< T > const &x, C< T > const &y, C< T > const &z)
 
template<typename T >
T max (T const &x, T const &y, T const &z, T const &w)
 
template<typename T , template< typename > class C>
C< Tmax (C< T > const &x, typename C< T >::value_type const &y, typename C< T >::value_type const &z, typename C< T >::value_type const &w)
 
template<typename T , template< typename > class C>
C< Tmax (C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)
 
template<typename T >
GLM_FUNC_QUALIFIER T min (T const &x, T const &y, T const &z)
 
template<typename T , template< typename > class C>
GLM_FUNC_QUALIFIER C< Tmin (C< T > const &x, typename C< T >::value_type const &y, typename C< T >::value_type const &z)
 
template<typename T , template< typename > class C>
GLM_FUNC_QUALIFIER C< Tmin (C< T > const &x, C< T > const &y, C< T > const &z)
 
template<typename T >
GLM_FUNC_QUALIFIER T min (T const &x, T const &y, T const &z, T const &w)
 
template<typename T , template< typename > class C>
GLM_FUNC_QUALIFIER C< Tmin (C< T > const &x, typename C< T >::value_type const &y, typename C< T >::value_type const &z, typename C< T >::value_type const &w)
 
template<typename T , template< typename > class C>
GLM_FUNC_QUALIFIER C< Tmin (C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)
 
template<typename T >
GLM_FUNC_QUALIFIER T max (T const &x, T const &y, T const &z)
 
template<typename T , template< typename > class C>
GLM_FUNC_QUALIFIER C< Tmax (C< T > const &x, typename C< T >::value_type const &y, typename C< T >::value_type const &z)
 
template<typename T , template< typename > class C>
GLM_FUNC_QUALIFIER C< Tmax (C< T > const &x, C< T > const &y, C< T > const &z)
 
template<typename T >
GLM_FUNC_QUALIFIER T max (T const &x, T const &y, T const &z, T const &w)
 
template<typename T , template< typename > class C>
GLM_FUNC_QUALIFIER C< Tmax (C< T > const &x, typename C< T >::value_type const &y, typename C< T >::value_type const &z, typename C< T >::value_type const &w)
 
template<typename T , template< typename > class C>
GLM_FUNC_QUALIFIER C< Tmax (C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)
 
template<typename genType >
genType fastPow (genType const &x, genType const &y)
 
template<typename genTypeT , typename genTypeU >
genTypeT fastPow (genTypeT const &x, genTypeU const &y)
 
template<typename T >
T fastExp (const T &x)
 
template<typename T >
T fastLog (const T &x)
 
template<typename T >
T fastExp2 (const T &x)
 
template<typename T >
T fastLog2 (const T &x)
 
template<typename T >
T fastLn (const T &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType fastPow (genType const &x, genType const &y)
 
template<typename T >
GLM_FUNC_QUALIFIER T fastPow (const T x, int y)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
fastPow (const detail::tvec2< T > &x, const detail::tvec2< int > &y)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
fastPow (const detail::tvec3< T > &x, const detail::tvec3< int > &y)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
fastPow (const detail::tvec4< T > &x, const detail::tvec4< int > &y)
 
template<typename T >
GLM_FUNC_QUALIFIER T fastExp (const T x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType fastLog (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType fastExp2 (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType fastLog2 (genType const &x)
 
template<typename genType >
genType fastSqrt (genType const &x)
 
template<typename genType >
genType fastInverseSqrt (genType const &x)
 
template<typename genType >
genType::value_type fastLength (genType const &x)
 
template<typename genType >
genType::value_type fastDistance (genType const &x, genType const &y)
 
template<typename genType >
genType fastNormalize (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType fastSqrt (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType fastInverseSqrt (genType const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType fastLength (genType const &x)
 
template<typename valType >
GLM_FUNC_QUALIFIER valType fastLength (detail::tvec2< valType > const &x)
 
template<typename valType >
GLM_FUNC_QUALIFIER valType fastLength (detail::tvec3< valType > const &x)
 
template<typename valType >
GLM_FUNC_QUALIFIER valType fastLength (detail::tvec4< valType > const &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType fastDistance (genType const &x, genType const &y)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType fastNormalize (genType const &x)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec2< valType > 
fastNormalize (detail::tvec2< valType > const &x)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec3< valType > 
fastNormalize (detail::tvec3< valType > const &x)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec4< valType > 
fastNormalize (detail::tvec4< valType > const &x)
 
template<typename T >
T fastSin (const T &angle)
 
template<typename T >
T fastCos (const T &angle)
 
template<typename T >
T fastTan (const T &angle)
 
template<typename T >
T fastAsin (const T &angle)
 
template<typename T >
T fastAcos (const T &angle)
 
template<typename T >
T fastAtan (const T &y, const T &x)
 
template<typename T >
T fastAtan (const T &angle)
 
template<typename T >
GLM_FUNC_QUALIFIER T fastSin (T const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER T fastCos (T const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER T fastTan (T const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER T fastAsin (T const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER T fastAcos (T const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER T fastAtan (T const &y, T const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER T fastAtan (T const &x)
 
template<typename valType >
valType radialGradient (detail::tvec2< valType > const &Center, valType const &Radius, detail::tvec2< valType > const &Focal, detail::tvec2< valType > const &Position)
 
template<typename valType >
valType linearGradient (detail::tvec2< valType > const &Point0, detail::tvec2< valType > const &Point1, detail::tvec2< valType > const &Position)
 
template<typename T >
bool rightHanded (detail::tvec3< T > const &tangent, detail::tvec3< T > const &binormal, detail::tvec3< T > const &normal)
 
template<typename T >
bool leftHanded (detail::tvec3< T > const &tangent, detail::tvec3< T > const &binormal, detail::tvec3< T > const &normal)
 
template<typename T >
GLM_FUNC_QUALIFIER bool rightHanded (detail::tvec3< T > const &tangent, detail::tvec3< T > const &binormal, detail::tvec3< T > const &normal)
 
template<typename T >
GLM_FUNC_QUALIFIER bool leftHanded (detail::tvec3< T > const &tangent, detail::tvec3< T > const &binormal, detail::tvec3< T > const &normal)
 
template<typename T >
detail::tmat3x3< TboxInertia3 (T const &Mass, detail::tvec3< T > const &Scale)
 
template<typename T >
detail::tmat4x4< TboxInertia4 (T const &Mass, detail::tvec3< T > const &Scale)
 
template<typename T >
detail::tmat3x3< TdiskInertia3 (T const &Mass, T const &Radius)
 
template<typename T >
detail::tmat4x4< TdiskInertia4 (T const &Mass, T const &Radius)
 
template<typename T >
detail::tmat3x3< TballInertia3 (T const &Mass, T const &Radius)
 
template<typename T >
detail::tmat4x4< TballInertia4 (T const &Mass, T const &Radius)
 
template<typename T >
detail::tmat3x3< TsphereInertia3 (T const &Mass, T const &Radius)
 
template<typename T >
detail::tmat4x4< TsphereInertia4 (T const &Mass, T const &Radius)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x3< T
boxInertia3 (T const &Mass, detail::tvec3< T > const &Scale)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
boxInertia4 (T const &Mass, detail::tvec3< T > const &Scale)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x3< T
diskInertia3 (T const &Mass, T const &Radius)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
diskInertia4 (T const &Mass, T const &Radius)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x3< T
ballInertia3 (T const &Mass, T const &Radius)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
ballInertia4 (T const &Mass, T const &Radius)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x3< T
sphereInertia3 (T const &Mass, T const &Radius)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
sphereInertia4 (T const &Mass, T const &Radius)
 
dword uint10_10_10_2_cast (glm::vec4 const &v)
 
int pow (int x, int y)
 
int sqrt (int x)
 
template<typename genIUType >
genIUType log2 (genIUType const &x)
 
unsigned int floor_log2 (unsigned int x)
 
int mod (int x, int y)
 
template<typename genType >
genType factorial (genType const &x)
 
uint pow (uint x, uint y)
 
uint sqrt (uint x)
 
uint mod (uint x, uint y)
 
uint nlz (uint x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType factorial (genType const &x)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec2< valType > 
factorial (detail::tvec2< valType > const &x)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec3< valType > 
factorial (detail::tvec3< valType > const &x)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec4< valType > 
factorial (detail::tvec4< valType > const &x)
 
template<typename genType >
bool intersectRayTriangle (genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &baryPosition)
 
template<typename genType >
bool intersectLineTriangle (genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &position)
 
template<typename genType >
bool intersectRaySphere (genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, const typename genType::value_type sphereRadiusSquered, typename genType::value_type &intersectionDistance)
 
template<typename genType >
bool intersectRaySphere (genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, const typename genType::value_type sphereRadius, genType &intersectionPosition, genType &intersectionNormal)
 
template<typename genType >
bool intersectLineSphere (genType const &point0, genType const &point1, genType const &sphereCenter, typename genType::value_type sphereRadius, genType &intersectionPosition1, genType &intersectionNormal1, genType &intersectionPosition2=genType(), genType &intersectionNormal2=genType())
 
template<typename genType >
GLM_FUNC_QUALIFIER bool intersectRayTriangle (genType const &orig, genType const &dir, genType const &v0, genType const &v1, genType const &v2, genType &baryPosition)
 
template<typename genType >
GLM_FUNC_QUALIFIER bool intersectLineTriangle (genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &position)
 
template<typename genType >
GLM_FUNC_QUALIFIER bool intersectRaySphere (genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, const typename genType::value_type sphereRadiusSquered, typename genType::value_type &intersectionDistance)
 
template<typename genType >
GLM_FUNC_QUALIFIER bool intersectRaySphere (genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, const typename genType::value_type sphereRadius, genType &intersectionPosition, genType &intersectionNormal)
 
template<typename genType >
GLM_FUNC_QUALIFIER bool intersectLineSphere (genType const &point0, genType const &point1, genType const &sphereCenter, typename genType::value_type sphereRadius, genType &intersectionPoint1, genType &intersectionNormal1, genType &intersectionPoint2, genType &intersectionNormal2)
 
template<typename genType >
genType log (genType const &x, genType const &base)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType log (genType const &x, genType const &base)
 
template<typename T >
detail::tmat3x3< TmatrixCross3 (detail::tvec3< T > const &x)
 
template<typename T >
detail::tmat4x4< TmatrixCross4 (detail::tvec3< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x3< T
matrixCross3 (detail::tvec3< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
matrixCross4 (detail::tvec3< T > const &x)
 
template<typename T >
void axisAngle (detail::tmat4x4< T > const &mat, detail::tvec3< T > &axis, T &angle)
 From GLM_GTX_matrix_interpolation extension. More...
 
template<typename T >
detail::tmat4x4< TaxisAngleMatrix (detail::tvec3< T > const &axis, T const angle)
 
template<typename T >
detail::tmat4x4< TextractMatrixRotation (detail::tmat4x4< T > const &mat)
 From GLM_GTX_matrix_interpolation extension. More...
 
template<typename T >
detail::tmat4x4< Tinterpolate (detail::tmat4x4< T > const &m1, detail::tmat4x4< T > const &m2, T const delta)
 
template<typename T >
GLM_FUNC_QUALIFIER void axisAngle (detail::tmat4x4< T > const &mat, detail::tvec3< T > &axis, T &angle)
 From GLM_GTX_matrix_interpolation extension. More...
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
axisAngleMatrix (detail::tvec3< T > const &axis, T const angle)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
extractMatrixRotation (detail::tmat4x4< T > const &mat)
 From GLM_GTX_matrix_interpolation extension. More...
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
interpolate (detail::tmat4x4< T > const &m1, detail::tmat4x4< T > const &m2, T const delta)
 
template<typename T >
detail::tmat2x2< TrowMajor2 (detail::tvec2< T > const &v1, detail::tvec2< T > const &v2)
 
template<typename T >
detail::tmat2x2< TrowMajor2 (detail::tmat2x2< T > const &m)
 
template<typename T >
detail::tmat3x3< TrowMajor3 (detail::tvec3< T > const &v1, detail::tvec3< T > const &v2, detail::tvec3< T > const &v3)
 
template<typename T >
detail::tmat3x3< TrowMajor3 (detail::tmat3x3< T > const &m)
 
template<typename T >
detail::tmat4x4< TrowMajor4 (detail::tvec4< T > const &v1, detail::tvec4< T > const &v2, detail::tvec4< T > const &v3, detail::tvec4< T > const &v4)
 
template<typename T >
detail::tmat4x4< TrowMajor4 (detail::tmat4x4< T > const &m)
 
template<typename T >
detail::tmat2x2< TcolMajor2 (detail::tvec2< T > const &v1, detail::tvec2< T > const &v2)
 
template<typename T >
detail::tmat2x2< TcolMajor2 (detail::tmat2x2< T > const &m)
 
template<typename T >
detail::tmat3x3< TcolMajor3 (detail::tvec3< T > const &v1, detail::tvec3< T > const &v2, detail::tvec3< T > const &v3)
 
template<typename T >
detail::tmat3x3< TcolMajor3 (detail::tmat3x3< T > const &m)
 
template<typename T >
detail::tmat4x4< TcolMajor4 (detail::tvec4< T > const &v1, detail::tvec4< T > const &v2, detail::tvec4< T > const &v3, detail::tvec4< T > const &v4)
 
template<typename T >
detail::tmat4x4< TcolMajor4 (detail::tmat4x4< T > const &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat2x2< T
rowMajor2 (detail::tvec2< T > const &v1, detail::tvec2< T > const &v2)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat2x2< T
rowMajor2 (const detail::tmat2x2< T > &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x3< T
rowMajor3 (const detail::tvec3< T > &v1, const detail::tvec3< T > &v2, const detail::tvec3< T > &v3)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x3< T
rowMajor3 (const detail::tmat3x3< T > &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
rowMajor4 (const detail::tvec4< T > &v1, const detail::tvec4< T > &v2, const detail::tvec4< T > &v3, const detail::tvec4< T > &v4)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
rowMajor4 (const detail::tmat4x4< T > &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat2x2< T
colMajor2 (const detail::tvec2< T > &v1, const detail::tvec2< T > &v2)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat2x2< T
colMajor2 (const detail::tmat2x2< T > &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x3< T
colMajor3 (const detail::tvec3< T > &v1, const detail::tvec3< T > &v2, const detail::tvec3< T > &v3)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x3< T
colMajor3 (const detail::tmat3x3< T > &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
colMajor4 (const detail::tvec4< T > &v1, const detail::tvec4< T > &v2, const detail::tvec4< T > &v3, const detail::tvec4< T > &v4)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
colMajor4 (const detail::tmat4x4< T > &m)
 
template<typename valType >
detail::tmat2x2< valType > diagonal2x2 (detail::tvec2< valType > const &v)
 
template<typename valType >
detail::tmat2x3< valType > diagonal2x3 (detail::tvec2< valType > const &v)
 
template<typename valType >
detail::tmat2x4< valType > diagonal2x4 (detail::tvec2< valType > const &v)
 
template<typename valType >
detail::tmat3x2< valType > diagonal3x2 (detail::tvec2< valType > const &v)
 
template<typename valType >
detail::tmat3x3< valType > diagonal3x3 (detail::tvec3< valType > const &v)
 
template<typename valType >
detail::tmat3x4< valType > diagonal3x4 (detail::tvec3< valType > const &v)
 
template<typename valType >
detail::tmat4x2< valType > diagonal4x2 (detail::tvec2< valType > const &v)
 
template<typename valType >
detail::tmat4x3< valType > diagonal4x3 (detail::tvec3< valType > const &v)
 
template<typename valType >
detail::tmat4x4< valType > diagonal4x4 (detail::tvec4< valType > const &v)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat2x2< valType > 
diagonal2x2 (detail::tvec2< valType > const &v)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat2x3< valType > 
diagonal2x3 (detail::tvec2< valType > const &v)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat2x4< valType > 
diagonal2x4 (detail::tvec2< valType > const &v)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat3x2< valType > 
diagonal3x2 (detail::tvec2< valType > const &v)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat3x3< valType > 
diagonal3x3 (detail::tvec3< valType > const &v)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat3x4< valType > 
diagonal3x4 (detail::tvec3< valType > const &v)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat4x4< valType > 
diagonal4x4 (detail::tvec4< valType > const &v)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat4x3< valType > 
diagonal4x3 (detail::tvec3< valType > const &v)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tmat4x2< valType > 
diagonal4x2 (detail::tvec2< valType > const &v)
 
template<typename T >
bool isNull (detail::tmat2x2< T > const &m, T const &epsilon)
 
template<typename T >
bool isNull (detail::tmat3x3< T > const &m, T const &epsilon)
 
template<typename T >
bool isNull (detail::tmat4x4< T > const &m, T const &epsilon)
 
template<typename genType >
bool isIdentity (genType const &m, typename genType::value_type const &epsilon)
 
template<typename valType >
bool isNormalized (detail::tmat2x2< valType > const &m, valType const &epsilon)
 
template<typename valType >
bool isNormalized (detail::tmat3x3< valType > const &m, valType const &epsilon)
 
template<typename valType >
bool isNormalized (detail::tmat4x4< valType > const &m, valType const &epsilon)
 
template<typename valType , template< typename > class matType>
bool isOrthogonal (matType< valType > const &m, valType const &epsilon)
 
template<typename T >
GLM_FUNC_QUALIFIER bool isNull (detail::tmat2x2< T > const &m, T const &epsilon)
 
template<typename T >
GLM_FUNC_QUALIFIER bool isNull (detail::tmat3x3< T > const &m, T const &epsilon)
 
template<typename T >
GLM_FUNC_QUALIFIER bool isNull (detail::tmat4x4< T > const &m, T const &epsilon)
 
template<typename genType >
GLM_FUNC_QUALIFIER bool isIdentity (genType const &m, typename genType::value_type const &epsilon)
 
template<typename genType >
GLM_FUNC_QUALIFIER bool isNormalized (detail::tmat2x2< genType > const &m, genType const &epsilon)
 
template<typename genType >
GLM_FUNC_QUALIFIER bool isNormalized (detail::tmat3x3< genType > const &m, genType const &epsilon)
 
template<typename genType >
GLM_FUNC_QUALIFIER bool isNormalized (detail::tmat4x4< genType > const &m, genType const &epsilon)
 
template<typename genType , template< typename > class matType>
GLM_FUNC_QUALIFIER bool isOrthogonal (matType< genType > const &m, genType const &epsilon)
 
template<typename valType >
valType mixedProduct (detail::tvec3< valType > const &v1, detail::tvec3< valType > const &v2, detail::tvec3< valType > const &v3)
 Mixed product of 3 vectors (from GLM_GTX_mixed_product extension) More...
 
template<typename valType >
GLM_FUNC_QUALIFIER valType mixedProduct (detail::tvec3< valType > const &v1, detail::tvec3< valType > const &v2, detail::tvec3< valType > const &v3)
 Mixed product of 3 vectors (from GLM_GTX_mixed_product extension) More...
 
template<typename genType >
genType higherMultiple (genType const &Source, genType const &Multiple)
 
template<typename genType >
genType lowerMultiple (genType const &Source, genType const &Multiple)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType higherMultiple (genType const &Source, genType const &Multiple)
 
template<>
GLM_FUNC_QUALIFIER detail::half higherMultiple (detail::half const &SourceH, detail::half const &MultipleH)
 
template<>
GLM_FUNC_QUALIFIER float higherMultiple (float const &Source, float const &Multiple)
 
template<>
GLM_FUNC_QUALIFIER double higherMultiple (double const &Source, double const &Multiple)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType lowerMultiple (genType const &Source, genType const &Multiple)
 
template<>
GLM_FUNC_QUALIFIER detail::half lowerMultiple (detail::half const &SourceH, detail::half const &MultipleH)
 
template<>
GLM_FUNC_QUALIFIER float lowerMultiple (float const &Source, float const &Multiple)
 
template<>
GLM_FUNC_QUALIFIER double lowerMultiple (double const &Source, double const &Multiple)
 
template<typename T >
T length2 (T const &x)
 
template<typename genType >
genType::value_type length2 (genType const &x)
 
template<typename T >
T length2 (detail::tquat< T > const &q)
 
template<typename T >
T distance2 (T const &p0, T const &p1)
 
template<typename genType >
genType::value_type distance2 (genType const &p0, genType const &p1)
 
template<typename T >
T l1Norm (detail::tvec3< T > const &x, detail::tvec3< T > const &y)
 
template<typename T >
T l1Norm (detail::tvec3< T > const &v)
 
template<typename T >
T l2Norm (detail::tvec3< T > const &x, detail::tvec3< T > const &y)
 
template<typename T >
T l2Norm (detail::tvec3< T > const &x)
 
template<typename T >
T lxNorm (detail::tvec3< T > const &x, detail::tvec3< T > const &y, unsigned int Depth)
 
template<typename T >
T lxNorm (detail::tvec3< T > const &x, unsigned int Depth)
 
template<typename T >
GLM_FUNC_QUALIFIER T length2 (T const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER T length2 (detail::tvec2< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER T length2 (detail::tvec3< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER T length2 (detail::tvec4< T > const &x)
 
template<typename T >
GLM_FUNC_QUALIFIER T length2 (detail::tquat< T > const &q)
 
template<typename T >
GLM_FUNC_QUALIFIER T distance2 (T const &p0, T const &p1)
 
template<typename T >
GLM_FUNC_QUALIFIER T distance2 (detail::tvec2< T > const &p0, detail::tvec2< T > const &p1)
 
template<typename T >
GLM_FUNC_QUALIFIER T distance2 (detail::tvec3< T > const &p0, detail::tvec3< T > const &p1)
 
template<typename T >
GLM_FUNC_QUALIFIER T distance2 (detail::tvec4< T > const &p0, detail::tvec4< T > const &p1)
 
template<typename T >
GLM_FUNC_QUALIFIER T l1Norm (detail::tvec3< T > const &a, detail::tvec3< T > const &b)
 
template<typename T >
GLM_FUNC_QUALIFIER T l1Norm (detail::tvec3< T > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER T l2Norm (detail::tvec3< T > const &a, detail::tvec3< T > const &b)
 
template<typename T >
GLM_FUNC_QUALIFIER T l2Norm (detail::tvec3< T > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER T lxNorm (detail::tvec3< T > const &x, detail::tvec3< T > const &y, unsigned int Depth)
 
template<typename T >
GLM_FUNC_QUALIFIER T lxNorm (detail::tvec3< T > const &v, unsigned int Depth)
 
template<typename T >
detail::tvec3< TtriangleNormal (detail::tvec3< T > const &p1, detail::tvec3< T > const &p2, detail::tvec3< T > const &p3)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
triangleNormal (detail::tvec3< T > const &p1, detail::tvec3< T > const &p2, detail::tvec3< T > const &p3)
 
template<typename genType >
genType::value_type normalizeDot (genType const &x, genType const &y)
 
template<typename genType >
genType::value_type fastNormalizeDot (genType const &x, genType const &y)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType normalizeDot (genType const &x, genType const &y)
 
template<typename valType >
GLM_FUNC_QUALIFIER valType normalizeDot (detail::tvec2< valType > const &x, detail::tvec2< valType > const &y)
 
template<typename valType >
GLM_FUNC_QUALIFIER valType normalizeDot (detail::tvec3< valType > const &x, detail::tvec3< valType > const &y)
 
template<typename valType >
GLM_FUNC_QUALIFIER valType normalizeDot (detail::tvec4< valType > const &x, detail::tvec4< valType > const &y)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType fastNormalizeDot (genType const &x, genType const &y)
 
template<typename valType >
GLM_FUNC_QUALIFIER valType fastNormalizeDot (detail::tvec2< valType > const &x, detail::tvec2< valType > const &y)
 
template<typename valType >
GLM_FUNC_QUALIFIER valType fastNormalizeDot (detail::tvec3< valType > const &x, detail::tvec3< valType > const &y)
 
template<typename valType >
GLM_FUNC_QUALIFIER valType fastNormalizeDot (detail::tvec4< valType > const &x, detail::tvec4< valType > const &y)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType pow2 (const genType &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType pow3 (const genType &x)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType pow4 (const genType &x)
 
GLM_FUNC_QUALIFIER bool powOfTwo (int x)
 
GLM_FUNC_QUALIFIER
detail::tvec2< bool > 
powOfTwo (const detail::tvec2< int > &x)
 
GLM_FUNC_QUALIFIER
detail::tvec3< bool > 
powOfTwo (const detail::tvec3< int > &x)
 
GLM_FUNC_QUALIFIER
detail::tvec4< bool > 
powOfTwo (const detail::tvec4< int > &x)
 
template<typename T >
detail::tmat3x3< Torthonormalize (const detail::tmat3x3< T > &m)
 
template<typename T >
detail::tvec3< Torthonormalize (const detail::tvec3< T > &x, const detail::tvec3< T > &y)
 From GLM_GTX_orthonormalize extension. More...
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x3< T
orthonormalize (const detail::tmat3x3< T > &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
orthonormalize (const detail::tvec3< T > &x, const detail::tvec3< T > &y)
 From GLM_GTX_orthonormalize extension. More...
 
template<typename vecType >
vecType perp (vecType const &x, vecType const &Normal)
 
template<typename vecType >
GLM_FUNC_QUALIFIER vecType perp (vecType const &x, vecType const &Normal)
 
template<typename T >
detail::tvec3< Tpolar (detail::tvec3< T > const &euclidean)
 
template<typename T >
detail::tvec3< Teuclidean (detail::tvec2< T > const &polar)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
polar (detail::tvec3< T > const &euclidean)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
euclidean (detail::tvec2< T > const &polar)
 
template<typename vecType >
vecType proj (vecType const &x, vecType const &Normal)
 
template<typename vecType >
GLM_FUNC_QUALIFIER vecType proj (vecType const &x, vecType const &Normal)
 
template<typename valType >
detail::tvec3< valType > cross (detail::tquat< valType > const &q, detail::tvec3< valType > const &v)
 
template<typename valType >
detail::tvec3< valType > cross (detail::tvec3< valType > const &v, detail::tquat< valType > const &q)
 
template<typename valType >
detail::tquat< valType > squad (detail::tquat< valType > const &q1, detail::tquat< valType > const &q2, detail::tquat< valType > const &s1, detail::tquat< valType > const &s2, valType const &h)
 
template<typename valType >
detail::tquat< valType > intermediate (detail::tquat< valType > const &prev, detail::tquat< valType > const &curr, detail::tquat< valType > const &next)
 
template<typename valType >
detail::tquat< valType > exp (detail::tquat< valType > const &q)
 
template<typename valType >
detail::tquat< valType > log (detail::tquat< valType > const &q)
 
template<typename valType >
detail::tquat< valType > pow (detail::tquat< valType > const &x, valType const &y)
 
template<typename valType >
detail::tvec3< valType > rotate (detail::tquat< valType > const &q, detail::tvec3< valType > const &v)
 
template<typename valType >
detail::tvec4< valType > rotate (detail::tquat< valType > const &q, detail::tvec4< valType > const &v)
 
template<typename valType >
valType extractRealComponent (detail::tquat< valType > const &q)
 
template<typename valType >
detail::tmat3x3< valType > toMat3 (detail::tquat< valType > const &x)
 
template<typename valType >
detail::tmat4x4< valType > toMat4 (detail::tquat< valType > const &x)
 
template<typename valType >
detail::tquat< valType > toQuat (detail::tmat3x3< valType > const &x)
 
template<typename valType >
detail::tquat< valType > toQuat (detail::tmat4x4< valType > const &x)
 
template<typename T >
detail::tquat< TshortMix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
 
template<typename T >
detail::tquat< TfastMix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec3< valType > 
cross (detail::tvec3< valType > const &v, detail::tquat< valType > const &q)
 
template<typename valType >
GLM_FUNC_QUALIFIER
detail::tvec3< valType > 
cross (detail::tquat< valType > const &q, detail::tvec3< valType > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tquat< T
squad (detail::tquat< T > const &q1, detail::tquat< T > const &q2, detail::tquat< T > const &s1, detail::tquat< T > const &s2, T const &h)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tquat< T
intermediate (detail::tquat< T > const &prev, detail::tquat< T > const &curr, detail::tquat< T > const &next)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tquat< T
exp (detail::tquat< T > const &q)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tquat< T
log (detail::tquat< T > const &q)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tquat< T
pow (detail::tquat< T > const &x, T const &y)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
rotate (detail::tquat< T > const &q, detail::tvec3< T > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
rotate (detail::tquat< T > const &q, detail::tvec4< T > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER T extractRealComponent (detail::tquat< T > const &q)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tquat< T
shortMix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tquat< T
fastMix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
 
template<typename T >
detail::tvec2< Trotate (detail::tvec2< T > const &v, T const &angle)
 
template<typename T >
detail::tvec3< Trotate (detail::tvec3< T > const &v, T const &angle, detail::tvec3< T > const &normal)
 
template<typename T >
detail::tvec4< Trotate (detail::tvec4< T > const &v, T const &angle, detail::tvec3< T > const &normal)
 
template<typename T >
detail::tvec3< TrotateX (detail::tvec3< T > const &v, T const &angle)
 
template<typename T >
detail::tvec3< TrotateY (detail::tvec3< T > const &v, T const &angle)
 
template<typename T >
detail::tvec3< TrotateZ (detail::tvec3< T > const &v, T const &angle)
 
template<typename T >
detail::tvec4< TrotateX (detail::tvec4< T > const &v, T const &angle)
 
template<typename T >
detail::tvec4< TrotateY (detail::tvec4< T > const &v, T const &angle)
 
template<typename T >
detail::tvec4< TrotateZ (detail::tvec4< T > const &v, T const &angle)
 
template<typename T >
detail::tmat4x4< Torientation (detail::tvec3< T > const &Normal, detail::tvec3< T > const &Up)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
rotate (detail::tvec2< T > const &v, T const &angle)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
rotate (detail::tvec3< T > const &v, T const &angle, detail::tvec3< T > const &normal)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
rotate (detail::tvec4< T > const &v, T const &angle, detail::tvec3< T > const &normal)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
rotateX (detail::tvec3< T > const &v, T const &angle)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
rotateY (detail::tvec3< T > const &v, T const &angle)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
rotateZ (detail::tvec3< T > const &v, T const &angle)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
rotateX (detail::tvec4< T > const &v, T const &angle)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
rotateY (detail::tvec4< T > const &v, T const &angle)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
rotateZ (detail::tvec4< T > const &v, T const &angle)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
orientation (detail::tvec3< T > const &Normal, detail::tvec3< T > const &Up)
 
GLM_FUNC_QUALIFIER
detail::tmat4x4< float > 
mat4_cast (detail::fmat4x4SIMD const &x)
 
GLM_FUNC_QUALIFIER
detail::fmat4x4SIMD 
matrixCompMult (detail::fmat4x4SIMD const &x, detail::fmat4x4SIMD const &y)
 
GLM_FUNC_QUALIFIER
detail::fmat4x4SIMD 
outerProduct (detail::fvec4SIMD const &c, detail::fvec4SIMD const &r)
 
GLM_FUNC_QUALIFIER
detail::fmat4x4SIMD 
transpose (detail::fmat4x4SIMD const &m)
 
GLM_FUNC_QUALIFIER float determinant (detail::fmat4x4SIMD const &m)
 
GLM_FUNC_QUALIFIER
detail::fmat4x4SIMD 
inverse (detail::fmat4x4SIMD const &m)
 
GLM_FUNC_QUALIFIER
detail::tvec4< float > 
vec4_cast (detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
abs (detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
sign (detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
floor (detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
trunc (detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
round (detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
ceil (detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
fract (detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
mod (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
mod (detail::fvec4SIMD const &x, float const &y)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
min (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
min (detail::fvec4SIMD const &x, float const &y)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
max (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
max (detail::fvec4SIMD const &x, float const &y)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
clamp (detail::fvec4SIMD const &x, detail::fvec4SIMD const &minVal, detail::fvec4SIMD const &maxVal)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
clamp (detail::fvec4SIMD const &x, float const &minVal, float const &maxVal)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
mix (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y, detail::fvec4SIMD const &a)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
step (detail::fvec4SIMD const &edge, detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
step (float const &edge, detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
smoothstep (detail::fvec4SIMD const &edge0, detail::fvec4SIMD const &edge1, detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
smoothstep (float const &edge0, float const &edge1, detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
fma (detail::fvec4SIMD const &a, detail::fvec4SIMD const &b, detail::fvec4SIMD const &c)
 
GLM_FUNC_QUALIFIER float length (detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER float fastLength (detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER float niceLength (detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
length4 (detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
fastLength4 (detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
niceLength4 (detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER float distance (detail::fvec4SIMD const &p0, detail::fvec4SIMD const &p1)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
distance4 (detail::fvec4SIMD const &p0, detail::fvec4SIMD const &p1)
 
GLM_FUNC_QUALIFIER float dot (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
dot4 (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
cross (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
normalize (detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
fastNormalize (detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
faceforward (detail::fvec4SIMD const &N, detail::fvec4SIMD const &I, detail::fvec4SIMD const &Nref)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
reflect (detail::fvec4SIMD const &I, detail::fvec4SIMD const &N)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
refract (detail::fvec4SIMD const &I, detail::fvec4SIMD const &N, float const &eta)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
sqrt (detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
niceSqrt (detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
fastSqrt (detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
inversesqrt (detail::fvec4SIMD const &x)
 
GLM_FUNC_QUALIFIER
detail::fvec4SIMD 
fastInversesqrt (detail::fvec4SIMD const &x)
 
template<typename genType >
genType catmullRom (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
 
template<typename genType >
genType hermite (genType const &v1, genType const &t1, genType const &v2, genType const &t2, typename genType::value_type const &s)
 
template<typename genType >
genType cubic (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
 From GLM_GTX_spline extension. More...
 
template<typename genType >
GLM_FUNC_QUALIFIER genType catmullRom (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType hermite (genType const &v1, genType const &t1, genType const &v2, genType const &t2, typename genType::value_type const &s)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType cubic (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
 From GLM_GTX_spline extension. More...
 
template<typename genType >
std::string to_string (genType const &x)
 
GLM_FUNC_QUALIFIER std::string to_string (detail::half const &x)
 
GLM_FUNC_QUALIFIER std::string to_string (float x)
 
GLM_FUNC_QUALIFIER std::string to_string (double x)
 
GLM_FUNC_QUALIFIER std::string to_string (int x)
 
GLM_FUNC_QUALIFIER std::string to_string (unsigned int x)
 
GLM_FUNC_QUALIFIER std::string to_string (detail::tvec2< bool > const &v)
 
GLM_FUNC_QUALIFIER std::string to_string (detail::tvec3< bool > const &v)
 
GLM_FUNC_QUALIFIER std::string to_string (detail::tvec4< bool > const &v)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tvec2< detail::half > const &v)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tvec3< detail::half > const &v)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tvec4< detail::half > const &v)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tvec2< float > const &v)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tvec3< float > const &v)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tvec4< float > const &v)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tvec2< double > const &v)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tvec3< double > const &v)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tvec4< double > const &v)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tvec2< int > const &v)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tvec3< int > const &v)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tvec4< int > const &v)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tvec2< unsigned int > const &v)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tvec3< unsigned int > const &v)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tvec4< unsigned int > const &v)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat2x2< detail::half > const &m)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat2x3< detail::half > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat2x4< detail::half > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat3x2< detail::half > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat3x3< detail::half > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat3x4< detail::half > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat4x2< detail::half > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat4x3< detail::half > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat4x4< detail::half > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat2x2< float > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat2x3< float > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat2x4< float > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat3x2< float > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat3x3< float > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat3x4< float > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat4x2< float > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat4x3< float > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat4x4< float > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat2x2< double > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat2x3< double > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat2x4< double > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat3x2< double > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat3x3< double > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat3x4< double > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat4x2< double > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat4x3< double > const &x)
 
template<>
GLM_FUNC_QUALIFIER std::string to_string (detail::tmat4x4< double > const &x)
 
template<typename T >
detail::tmat4x4< Ttranslate (T x, T y, T z)
 
template<typename T >
detail::tmat4x4< Ttranslate (detail::tmat4x4< T > const &m, T x, T y, T z)
 
template<typename T >
detail::tmat4x4< Ttranslate (detail::tvec3< T > const &v)
 
template<typename T >
detail::tmat4x4< Trotate (T angle, T x, T y, T z)
 
template<typename T >
detail::tmat4x4< Trotate (T angle, detail::tvec3< T > const &v)
 
template<typename T >
detail::tmat4x4< Trotate (detail::tmat4x4< T > const &m, T angle, T x, T y, T z)
 
template<typename T >
detail::tmat4x4< Tscale (T x, T y, T z)
 
template<typename T >
detail::tmat4x4< Tscale (detail::tmat4x4< T > const &m, T x, T y, T z)
 
template<typename T >
detail::tmat4x4< Tscale (detail::tvec3< T > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
translate (T x, T y, T z)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
translate (detail::tmat4x4< T > const &m, T x, T y, T z)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
translate (detail::tvec3< T > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
rotate (T angle, T x, T y, T z)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
rotate (T angle, detail::tvec3< T > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
rotate (detail::tmat4x4< T > const &m, T angle, T x, T y, T z)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
scale (T x, T y, T z)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
scale (detail::tmat4x4< T > const &m, T x, T y, T z)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
scale (detail::tvec3< T > const &v)
 
template<typename T >
detail::tmat3x3< TshearX2D (detail::tmat3x3< T > const &m, T y)
 
template<typename T >
detail::tmat3x3< TshearY2D (detail::tmat3x3< T > const &m, T x)
 
template<typename T >
detail::tmat4x4< TshearX3D (const detail::tmat4x4< T > &m, T y, T z)
 
template<typename T >
detail::tmat4x4< TshearY3D (const detail::tmat4x4< T > &m, T x, T z)
 
template<typename T >
detail::tmat4x4< TshearZ3D (const detail::tmat4x4< T > &m, T x, T y)
 
template<typename T >
detail::tmat3x3< Tproj2D (const detail::tmat3x3< T > &m, const detail::tvec3< T > &normal)
 
template<typename T >
detail::tmat4x4< Tproj3D (const detail::tmat4x4< T > &m, const detail::tvec3< T > &normal)
 
template<typename valType >
detail::tmat4x4< valType > scaleBias (valType scale, valType bias)
 
template<typename valType >
detail::tmat4x4< valType > scaleBias (detail::tmat4x4< valType > const &m, valType scale, valType bias)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x3< T
shearX2D (const detail::tmat3x3< T > &m, T s)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x3< T
shearY2D (const detail::tmat3x3< T > &m, T s)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
shearX3D (const detail::tmat4x4< T > &m, T s, T t)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
shearY3D (const detail::tmat4x4< T > &m, T s, T t)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
shearZ3D (const detail::tmat4x4< T > &m, T s, T t)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x3< T
reflect2D (const detail::tmat3x3< T > &m, const detail::tvec3< T > &normal)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
reflect3D (const detail::tmat4x4< T > &m, const detail::tvec3< T > &normal)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x3< T
proj2D (const detail::tmat3x3< T > &m, const detail::tvec3< T > &normal)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
proj3D (const detail::tmat4x4< T > &m, const detail::tvec3< T > &normal)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
scaleBias (T scale, T bias)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
scaleBias (const detail::tmat4x4< T > &m, T scale, T bias)
 
template<typename valType >
void set (detail::tvec2< valType > &v, valType const &x, valType const &y)
 
template<typename valType >
void set (detail::tvec3< valType > &v, valType const &x, valType const &y, valType const &z)
 
template<typename valType >
void set (detail::tvec4< valType > &v, valType const &x, valType const &y, valType const &z, valType const &w)
 
template<typename valType >
GLM_FUNC_QUALIFIER void set (detail::tvec2< valType > &v, valType const &x, valType const &y)
 
template<typename valType >
GLM_FUNC_QUALIFIER void set (detail::tvec3< valType > &v, valType const &x, valType const &y, valType const &z)
 
template<typename valType >
GLM_FUNC_QUALIFIER void set (detail::tvec4< valType > &v, valType const &x, valType const &y, valType const &z, valType const &w)
 
template<typename vecType >
GLM_FUNC_QUALIFIER
vecType::value_type 
angle (vecType const &x, vecType const &y)
 
template<typename T >
GLM_FUNC_QUALIFIER T orientedAngle (detail::tvec2< T > const &x, detail::tvec2< T > const &y)
 
template<typename T >
GLM_FUNC_QUALIFIER T orientedAngle (detail::tvec3< T > const &x, detail::tvec3< T > const &y, detail::tvec3< T > const &ref)
 
template<typename genType >
GLM_FUNC_QUALIFIER
genType::value_type 
angle (genType const &x, genType const &y)
 
template<typename valType >
GLM_FUNC_QUALIFIER valType orientedAngle (detail::tvec2< valType > const &x, detail::tvec2< valType > const &y)
 
template<typename valType >
GLM_FUNC_QUALIFIER valType orientedAngle (detail::tvec3< valType > const &x, detail::tvec3< valType > const &y, detail::tvec3< valType > const &ref)
 
template<typename genType >
bool areCollinear (genType const &v0, genType const &v1, typename genType::value_type const &epsilon)
 
template<typename genType >
bool areOrthogonal (genType const &v0, genType const &v1, typename genType::value_type const &epsilon)
 From GLM_GTX_vector_query extensions. More...
 
template<typename genType , template< typename > class vecType>
bool isNormalized (vecType< genType > const &v, genType const &epsilon)
 
template<typename valType >
bool isNull (detail::tvec2< valType > const &v, valType const &epsilon)
 
template<typename valType >
bool isNull (detail::tvec3< valType > const &v, valType const &epsilon)
 
template<typename valType >
bool isNull (detail::tvec4< valType > const &v, valType const &epsilon)
 
template<typename genType >
bool areOrthonormal (genType const &v0, genType const &v1, typename genType::value_type const &epsilon)
 
template<typename T >
GLM_FUNC_QUALIFIER bool areCollinear (detail::tvec2< T > const &v0, detail::tvec2< T > const &v1, typename detail::tvec2< T >::value_type const &epsilon)
 
template<typename T >
GLM_FUNC_QUALIFIER bool areCollinear (detail::tvec3< T > const &v0, detail::tvec3< T > const &v1, typename detail::tvec3< T >::value_type const &epsilon)
 
template<typename T >
GLM_FUNC_QUALIFIER bool areCollinear (detail::tvec4< T > const &v0, detail::tvec4< T > const &v1, typename detail::tvec4< T >::value_type const &epsilon)
 
template<typename genType >
GLM_FUNC_QUALIFIER bool areOrthogonal (genType const &v0, genType const &v1, typename genType::value_type const &epsilon)
 From GLM_GTX_vector_query extensions. More...
 
template<typename genType , template< typename > class vecType>
GLM_FUNC_QUALIFIER bool isNormalized (vecType< genType > const &v, genType const &epsilon)
 
template<typename valType >
GLM_FUNC_QUALIFIER bool isNull (detail::tvec2< valType > const &v, valType const &epsilon)
 
template<typename valType >
GLM_FUNC_QUALIFIER bool isNull (detail::tvec3< valType > const &v, valType const &epsilon)
 
template<typename valType >
GLM_FUNC_QUALIFIER bool isNull (detail::tvec4< valType > const &v, valType const &epsilon)
 
template<typename T >
GLM_FUNC_QUALIFIER bool isCompNull (T const &s, T const &epsilon)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< bool > 
isCompNull (detail::tvec2< T > const &v, T const &epsilon)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< bool > 
isCompNull (detail::tvec3< T > const &v, T const &epsilon)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< bool > 
isCompNull (detail::tvec4< T > const &v, T const &epsilon)
 
template<typename genType >
GLM_FUNC_QUALIFIER bool areOrthonormal (genType const &v0, genType const &v1, typename genType::value_type const &epsilon)
 
template<typename genTypeT , typename genTypeU >
genTypeT add (genTypeT const &a, genTypeU const &b)
 
template<typename genTypeT , typename genTypeU >
genTypeT sub (genTypeT const &a, genTypeU const &b)
 
template<typename genTypeT , typename genTypeU >
genTypeT mul (genTypeT const &a, genTypeU const &b)
 
template<typename genTypeT , typename genTypeU >
genTypeT div (genTypeT const &a, genTypeU const &b)
 
template<typename genTypeT , typename genTypeU , typename genTypeV >
genTypeT mad (genTypeT const &a, genTypeU const &b, genTypeV const &c)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType add (genType const &a, genType const &b)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType sub (genType const &a, genType const &b)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat2x2< T
mul (detail::tmat2x2< T > const &a, detail::tmat2x2< T > const &b)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat3x3< T
mul (detail::tmat3x3< T > const &a, detail::tmat3x3< T > const &b)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tmat4x4< T
mul (detail::tmat4x4< T > const &a, detail::tmat4x4< T > const &b)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
mul (detail::tmat2x2< T > const &m, detail::tvec2< T > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
mul (detail::tmat3x3< T > const &m, detail::tvec3< T > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
mul (detail::tmat4x4< T > const &m, detail::tvec4< T > const &v)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
mul (detail::tvec2< T > const &v, detail::tmat2x2< T > const &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
mul (detail::tvec3< T > const &v, detail::tmat3x3< T > const &m)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
mul (detail::tvec4< T > const &v, detail::tmat4x4< T > const &m)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType div (genType const &a, genType const &b)
 
template<typename genTypeT , typename genTypeU , typename genTypeV >
GLM_FUNC_QUALIFIER genTypeT mad (genTypeT const &a, genTypeU const &b, genTypeV const &c)
 
template<typename genType >
genType clamp (genType const &Texcoord)
 
template<typename genType >
genType repeat (genType const &Texcoord)
 
template<typename genType >
genType mirrorRepeat (genType const &Texcoord)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType clamp (genType const &Texcoord)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
clamp (detail::tvec2< T > const &Texcoord)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
clamp (detail::tvec3< T > const &Texcoord)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
clamp (detail::tvec4< T > const &Texcoord)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType repeat (genType const &Texcoord)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
repeat (detail::tvec2< T > const &Texcoord)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
repeat (detail::tvec3< T > const &Texcoord)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
repeat (detail::tvec4< T > const &Texcoord)
 
template<typename genType >
GLM_FUNC_QUALIFIER genType mirrorRepeat (genType const &Texcoord)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec2< T
mirrorRepeat (detail::tvec2< T > const &Texcoord)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec3< T
mirrorRepeat (detail::tvec3< T > const &Texcoord)
 
template<typename T >
GLM_FUNC_QUALIFIER
detail::tvec4< T
mirrorRepeat (detail::tvec4< T > const &Texcoord)
 

Typedef Documentation

typedef detail::tvec1<bool> glm::bvec1

1 component vector of boolean. From GLM_GTX_vec1 extension.

Definition at line 94 of file vec1.hpp.

typedef double glm::highp_float_t

Definition at line 43 of file type_float.hpp.

1 component vector of high precision signed integer numbers. There is no guarantee on the actual precision. From GLM_GTX_vec1 extension.

Definition at line 66 of file vec1.hpp.

1 component vector of high precision unsigned integer numbers. There is no guarantee on the actual precision. From GLM_GTX_vec1 extension.

Definition at line 79 of file vec1.hpp.

1 component vector of high precision floating-point numbers. There is no guarantee on the actual precision. From GLM_GTX_vec1 extension.

Definition at line 53 of file vec1.hpp.

1 component vector of signed integer numbers. From GLM_GTX_vec1 extension.

Definition at line 117 of file vec1.hpp.

typedef float glm::lowp_float_t

Definition at line 40 of file type_float.hpp.

1 component vector of low precision signed integer numbers. There is no guarantee on the actual precision. From GLM_GTX_vec1 extension.

Definition at line 74 of file vec1.hpp.

1 component vector of low precision unsigned integer numbers. There is no guarantee on the actual precision. From GLM_GTX_vec1 extension.

Definition at line 87 of file vec1.hpp.

1 component vector of low precision floating-point numbers. There is no guarantee on the actual precision. From GLM_GTX_vec1 extension.

Definition at line 61 of file vec1.hpp.

typedef float glm::mediump_float_t

Definition at line 42 of file type_float.hpp.

1 component vector of medium precision signed integer numbers. There is no guarantee on the actual precision. From GLM_GTX_vec1 extension.

Definition at line 70 of file vec1.hpp.

1 component vector of medium precision unsigned integer numbers. There is no guarantee on the actual precision. From GLM_GTX_vec1 extension.

Definition at line 83 of file vec1.hpp.

1 component vector of medium precision floating-point numbers. There is no guarantee on the actual precision. From GLM_GTX_vec1 extension.

Definition at line 57 of file vec1.hpp.

1 component vector of unsigned integer numbers. From GLM_GTX_vec1 extension.

Definition at line 129 of file vec1.hpp.

1 component vector of floating-point numbers. From GLM_GTX_vec1 extension.

Definition at line 105 of file vec1.hpp.

Enumeration Type Documentation

enum glm::comp
Enumerator
X 
R 
S 
Y 
G 
T 
Z 
B 
P 
W 
A 
Q 

Definition at line 36 of file _swizzle.hpp.

37  {
38  X = 0,
39  R = 0,
40  S = 0,
41  Y = 1,
42  G = 1,
43  T = 1,
44  Z = 2,
45  B = 2,
46  P = 2,
47  W = 3,
48  A = 3,
49  Q = 3
50  };
Enumerator
nice 
fast 
simd 

Definition at line 36 of file type_gentype.hpp.

37  {
38  nice,
39  fast,
40  simd
41  };

Function Documentation

template<typename genFIType >
GLM_FUNC_QUALIFIER genFIType glm::abs ( genFIType const &  x)

Definition at line 64 of file func_common.inl.

67  {
68  return detail::Abs_<genFIType, std::numeric_limits<genFIType>::is_signed>::get(x);
69  }
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::abs ( detail::fvec4SIMD const &  x)

Definition at line 288 of file simd_vec4.inl.

References glm::detail::sse_abs_ps().

291 {
292  return detail::sse_abs_ps(x.Data);
293 }
GLM_FUNC_QUALIFIER __m128 sse_abs_ps(__m128 x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename genType >
GLM_FUNC_QUALIFIER genType glm::add ( genType const &  a,
genType const &  b 
)

Definition at line 13 of file verbose_operator.inl.

14  {
15  return a + b;
16  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat3x3<T> glm::affineInverse ( detail::tmat3x3< T > const &  m)

Definition at line 33 of file matrix_inverse.inl.

References transpose().

36  {
37  detail::tmat3x3<T> Result(m);
38  Result[2] = detail::tvec3<T>(0, 0, 1);
39  Result = transpose(Result);
40  detail::tvec3<T> Translation = Result * detail::tvec3<T>(-detail::tvec2<T>(m[2]), m[2][2]);
41  Result[2] = Translation;
42  return Result;
43  }
GLsizei GLboolean transpose
Definition: glew.h:1850
const GLdouble * m
Definition: glew.h:8385
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat4x4<T> glm::affineInverse ( detail::tmat4x4< T > const &  m)

Definition at line 47 of file matrix_inverse.inl.

References transpose().

50  {
51  detail::tmat4x4<T> Result(m);
52  Result[3] = detail::tvec4<T>(0, 0, 0, 1);
53  Result = transpose(Result);
54  detail::tvec4<T> Translation = Result * detail::tvec4<T>(-detail::tvec3<T>(m[3]), m[3][3]);
55  Result[3] = Translation;
56  return Result;
57  }
GLsizei GLboolean transpose
Definition: glew.h:1850
const GLdouble * m
Definition: glew.h:8385
template<typename genType >
GLM_FUNC_QUALIFIER genType::value_type glm::angle ( genType const &  x,
genType const &  y 
)

Definition at line 14 of file vector_angle.inl.

References acos(), degrees(), and dot().

18  {
19  return degrees(acos(dot(x, y)));
20  }
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLM_FUNC_DECL genType degrees(genType const &radians)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLM_FUNC_DECL genType acos(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER T glm::angle ( detail::tquat< T > const &  x)

Definition at line 733 of file quaternion.inl.

References acos(), degrees(), T, and glm::detail::tquat< T >::w.

736  {
737 #ifdef GLM_FORCE_RADIANS
738  return acos(x.w) * T(2);
739 #else
740  return glm::degrees(acos(x.w) * T(2));
741 #endif
742  }
GLM_FUNC_DECL genType degrees(genType const &radians)
GLM_FUNC_DECL genType acos(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER bool glm::areCollinear ( detail::tvec2< T > const &  v0,
detail::tvec2< T > const &  v1,
typename detail::tvec2< T >::value_type const &  epsilon 
)

Definition at line 19 of file vector_query.inl.

References cross(), epsilon(), length(), and T.

24  {
25  return length(cross(detail::tvec3<T>(v0, T(0)), detail::tvec3<T>(v1, T(0)))) < epsilon;
26  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLfloat v0
Definition: glew.h:1834
GLfloat GLfloat v1
Definition: glew.h:1838
GLuint GLsizei GLsizei * length
Definition: glew.h:1811
GLM_FUNC_DECL detail::tvec3< valType > cross(detail::tvec3< valType > const &x, detail::tvec3< valType > const &y)
template<typename T >
GLM_FUNC_QUALIFIER bool glm::areCollinear ( detail::tvec3< T > const &  v0,
detail::tvec3< T > const &  v1,
typename detail::tvec3< T >::value_type const &  epsilon 
)

Definition at line 30 of file vector_query.inl.

References cross(), epsilon(), and length().

35  {
36  return length(cross(v0, v1)) < epsilon;
37  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLfloat v0
Definition: glew.h:1834
GLfloat GLfloat v1
Definition: glew.h:1838
GLuint GLsizei GLsizei * length
Definition: glew.h:1811
GLM_FUNC_DECL detail::tvec3< valType > cross(detail::tvec3< valType > const &x, detail::tvec3< valType > const &y)
template<typename T >
GLM_FUNC_QUALIFIER bool glm::areCollinear ( detail::tvec4< T > const &  v0,
detail::tvec4< T > const &  v1,
typename detail::tvec4< T >::value_type const &  epsilon 
)

Definition at line 41 of file vector_query.inl.

References cross(), epsilon(), and length().

46  {
47  return length(cross(detail::tvec3<T>(v0), detail::tvec3<T>(v1))) < epsilon;
48  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLfloat v0
Definition: glew.h:1834
GLfloat GLfloat v1
Definition: glew.h:1838
GLuint GLsizei GLsizei * length
Definition: glew.h:1811
GLM_FUNC_DECL detail::tvec3< valType > cross(detail::tvec3< valType > const &x, detail::tvec3< valType > const &y)
template<typename T , typename U >
GLM_FUNC_QUALIFIER U glm::associatedMax ( x,
a,
y,
b 
)

Definition at line 414 of file associated_min_max.inl.

415 {
416  return x > y ? a : b;
417 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec2<U> glm::associatedMax ( const detail::tvec2< T > &  x,
const detail::tvec2< U > &  a,
const detail::tvec2< T > &  y,
const detail::tvec2< U > &  b 
)

Definition at line 422 of file associated_min_max.inl.

426 {
427  detail::tvec2<U> Result;
428  for(typename detail::tvec2<U>::size_type i = 0; i < detail::tvec2<U>::value_size; ++i)
429  Result[i] = x[i] > y[i] ? a[i] : b[i];
430  return Result;
431 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec3<U> glm::associatedMax ( const detail::tvec3< T > &  x,
const detail::tvec3< U > &  a,
const detail::tvec3< T > &  y,
const detail::tvec3< U > &  b 
)

Definition at line 436 of file associated_min_max.inl.

440 {
441  detail::tvec3<U> Result;
442  for(typename detail::tvec3<U>::size_type i = 0; i < detail::tvec3<U>::value_size; ++i)
443  Result[i] = x[i] > y[i] ? a[i] : b[i];
444  return Result;
445 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec4<U> glm::associatedMax ( const detail::tvec4< T > &  x,
const detail::tvec4< U > &  a,
const detail::tvec4< T > &  y,
const detail::tvec4< U > &  b 
)

Definition at line 450 of file associated_min_max.inl.

454 {
455  detail::tvec4<U> Result;
456  for(typename detail::tvec4<U>::size_type i = 0; i < detail::tvec4<U>::value_size; ++i)
457  Result[i] = x[i] > y[i] ? a[i] : b[i];
458  return Result;
459 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec2<U> glm::associatedMax ( x,
const detail::tvec2< U > &  a,
y,
const detail::tvec2< U > &  b 
)

Definition at line 464 of file associated_min_max.inl.

468 {
469  detail::tvec2<U> Result;
470  for(typename detail::tvec2<U>::size_type i = 0; i < detail::tvec2<U>::value_size; ++i)
471  Result[i] = x > y ? a[i] : b[i];
472  return Result;
473 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec3<U> glm::associatedMax ( x,
const detail::tvec3< U > &  a,
y,
const detail::tvec3< U > &  b 
)

Definition at line 478 of file associated_min_max.inl.

482 {
483  detail::tvec3<U> Result;
484  for(typename detail::tvec3<U>::size_type i = 0; i < detail::tvec3<U>::value_size; ++i)
485  Result[i] = x > y ? a[i] : b[i];
486  return Result;
487 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec4<U> glm::associatedMax ( x,
const detail::tvec4< U > &  a,
y,
const detail::tvec4< U > &  b 
)

Definition at line 492 of file associated_min_max.inl.

496 {
497  detail::tvec4<U> Result;
498  for(typename detail::tvec4<U>::size_type i = 0; i < detail::tvec4<U>::value_size; ++i)
499  Result[i] = x > y ? a[i] : b[i];
500  return Result;
501 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec2<U> glm::associatedMax ( const detail::tvec2< T > &  x,
a,
const detail::tvec2< T > &  y,
b 
)

Definition at line 506 of file associated_min_max.inl.

510 {
511  detail::tvec2<U> Result;
512  for(typename detail::tvec2<T>::size_type i = 0; i < detail::tvec2<T>::value_size(); ++i)
513  Result[i] = x[i] > y[i] ? a : b;
514  return Result;
515 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec3<U> glm::associatedMax ( const detail::tvec3< T > &  x,
a,
const detail::tvec3< T > &  y,
b 
)

Definition at line 520 of file associated_min_max.inl.

524 {
525  detail::tvec3<U> Result;
526  for(typename detail::tvec3<T>::size_type i = 0; i < detail::tvec3<T>::value_size(); ++i)
527  Result[i] = x[i] > y[i] ? a : b;
528  return Result;
529 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec4<U> glm::associatedMax ( const detail::tvec4< T > &  x,
a,
const detail::tvec4< T > &  y,
b 
)

Definition at line 534 of file associated_min_max.inl.

538 {
539  detail::tvec4<U> Result;
540  for(typename detail::tvec4<T>::size_type i = 0; i < detail::tvec4<T>::value_size(); ++i)
541  Result[i] = x[i] > y[i] ? a : b;
542  return Result;
543 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER U glm::associatedMax ( x,
a,
y,
b,
z,
c 
)

Definition at line 548 of file associated_min_max.inl.

553 {
554  U Result = x > y ? (x > z ? a : c) : (y > z ? b : c);
555  return Result;
556 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec2<U> glm::associatedMax ( const detail::tvec2< T > &  x,
const detail::tvec2< U > &  a,
const detail::tvec2< T > &  y,
const detail::tvec2< U > &  b,
const detail::tvec2< T > &  z,
const detail::tvec2< U > &  c 
)

Definition at line 561 of file associated_min_max.inl.

566 {
567  detail::tvec2<U> Result;
568  for(typename detail::tvec2<U>::size_type i = 0; i < detail::tvec2<U>::value_size; ++i)
569  Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a[i] : c[i]) : (y[i] > z[i] ? b[i] : c[i]);
570  return Result;
571 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec3<U> glm::associatedMax ( const detail::tvec3< T > &  x,
const detail::tvec3< U > &  a,
const detail::tvec3< T > &  y,
const detail::tvec3< U > &  b,
const detail::tvec3< T > &  z,
const detail::tvec3< U > &  c 
)

Definition at line 576 of file associated_min_max.inl.

581 {
582  detail::tvec3<U> Result;
583  for(typename detail::tvec3<U>::size_type i = 0; i < detail::tvec3<U>::value_size; ++i)
584  Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a[i] : c[i]) : (y[i] > z[i] ? b[i] : c[i]);
585  return Result;
586 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec4<U> glm::associatedMax ( const detail::tvec4< T > &  x,
const detail::tvec4< U > &  a,
const detail::tvec4< T > &  y,
const detail::tvec4< U > &  b,
const detail::tvec4< T > &  z,
const detail::tvec4< U > &  c 
)

Definition at line 591 of file associated_min_max.inl.

596 {
597  detail::tvec4<U> Result;
598  for(typename detail::tvec4<U>::size_type i = 0; i < detail::tvec4<U>::value_size; ++i)
599  Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a[i] : c[i]) : (y[i] > z[i] ? b[i] : c[i]);
600  return Result;
601 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec2<U> glm::associatedMax ( x,
const detail::tvec2< U > &  a,
y,
const detail::tvec2< U > &  b,
z,
const detail::tvec2< U > &  c 
)

Definition at line 606 of file associated_min_max.inl.

611 {
612  detail::tvec2<U> Result;
613  for(typename detail::tvec2<U>::size_type i = 0; i < detail::tvec2<U>::value_size; ++i)
614  Result[i] = x > y ? (x > z ? a[i] : c[i]) : (y > z ? b[i] : c[i]);
615  return Result;
616 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec3<U> glm::associatedMax ( x,
const detail::tvec3< U > &  a,
y,
const detail::tvec3< U > &  b,
z,
const detail::tvec3< U > &  c 
)

Definition at line 621 of file associated_min_max.inl.

626 {
627  detail::tvec3<U> Result;
628  for(typename detail::tvec3<U>::size_type i = 0; i < detail::tvec3<U>::value_size; ++i)
629  Result[i] = x > y ? (x > z ? a[i] : c[i]) : (y > z ? b[i] : c[i]);
630  return Result;
631 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec4<U> glm::associatedMax ( x,
const detail::tvec4< U > &  a,
y,
const detail::tvec4< U > &  b,
z,
const detail::tvec4< U > &  c 
)

Definition at line 636 of file associated_min_max.inl.

641 {
642  detail::tvec4<U> Result;
643  for(typename detail::tvec4<U>::size_type i = 0; i < detail::tvec4<U>::value_size; ++i)
644  Result[i] = x > y ? (x > z ? a[i] : c[i]) : (y > z ? b[i] : c[i]);
645  return Result;
646 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec2<U> glm::associatedMax ( const detail::tvec2< T > &  x,
a,
const detail::tvec2< T > &  y,
b,
const detail::tvec2< T > &  z,
c 
)

Definition at line 651 of file associated_min_max.inl.

656 {
657  detail::tvec2<U> Result;
658  for(typename detail::tvec2<T>::size_type i = 0; i < detail::tvec2<T>::value_size(); ++i)
659  Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a : c) : (y[i] > z[i] ? b : c);
660  return Result;
661 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec3<U> glm::associatedMax ( const detail::tvec3< T > &  x,
a,
const detail::tvec3< T > &  y,
b,
const detail::tvec3< T > &  z,
c 
)

Definition at line 666 of file associated_min_max.inl.

671 {
672  detail::tvec3<U> Result;
673  for(typename detail::tvec3<T>::size_type i = 0; i < detail::tvec3<T>::value_size(); ++i)
674  Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a : c) : (y[i] > z[i] ? b : c);
675  return Result;
676 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec4<U> glm::associatedMax ( const detail::tvec4< T > &  x,
a,
const detail::tvec4< T > &  y,
b,
const detail::tvec4< T > &  z,
c 
)

Definition at line 681 of file associated_min_max.inl.

686 {
687  detail::tvec4<U> Result;
688  for(typename detail::tvec4<T>::size_type i = 0; i < detail::tvec4<T>::value_size(); ++i)
689  Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a : c) : (y[i] > z[i] ? b : c);
690  return Result;
691 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER U glm::associatedMax ( x,
a,
y,
b,
z,
c,
w,
d 
)

Definition at line 696 of file associated_min_max.inl.

References max(), and T.

702 {
703  T Test1 = max(x, y);
704  T Test2 = max(z, w);;
705  U Result1 = x > y ? a : b;
706  U Result2 = z > w ? c : d;
707  U Result = Test1 > Test2 ? Result1 : Result2;
708  return Result;
709 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLM_FUNC_DECL genType max(genType const &x, genType const &y)
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec2<U> glm::associatedMax ( const detail::tvec2< T > &  x,
const detail::tvec2< U > &  a,
const detail::tvec2< T > &  y,
const detail::tvec2< U > &  b,
const detail::tvec2< T > &  z,
const detail::tvec2< U > &  c,
const detail::tvec2< T > &  w,
const detail::tvec2< U > &  d 
)

Definition at line 714 of file associated_min_max.inl.

References max(), and T.

720 {
721  detail::tvec2<U> Result;
722  for(typename detail::tvec2<U>::size_type i = 0; i < detail::tvec2<U>::value_size; ++i)
723  {
724  T Test1 = max(x[i], y[i]);
725  T Test2 = max(z[i], w[i]);
726  U Result1 = x[i] > y[i] ? a[i] : b[i];
727  U Result2 = z[i] > w[i] ? c[i] : d[i];
728  Result[i] = Test1 > Test2 ? Result1 : Result2;
729  }
730  return Result;
731 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLM_FUNC_DECL genType max(genType const &x, genType const &y)
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec3<U> glm::associatedMax ( const detail::tvec3< T > &  x,
const detail::tvec3< U > &  a,
const detail::tvec3< T > &  y,
const detail::tvec3< U > &  b,
const detail::tvec3< T > &  z,
const detail::tvec3< U > &  c,
const detail::tvec3< T > &  w,
const detail::tvec3< U > &  d 
)

Definition at line 736 of file associated_min_max.inl.

References max(), and T.

742 {
743  detail::tvec3<U> Result;
744  for(typename detail::tvec3<U>::size_type i = 0; i < detail::tvec3<U>::value_size; ++i)
745  {
746  T Test1 = max(x[i], y[i]);
747  T Test2 = max(z[i], w[i]);
748  U Result1 = x[i] > y[i] ? a[i] : b[i];
749  U Result2 = z[i] > w[i] ? c[i] : d[i];
750  Result[i] = Test1 > Test2 ? Result1 : Result2;
751  }
752  return Result;
753 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLM_FUNC_DECL genType max(genType const &x, genType const &y)
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec4<U> glm::associatedMax ( const detail::tvec4< T > &  x,
const detail::tvec4< U > &  a,
const detail::tvec4< T > &  y,
const detail::tvec4< U > &  b,
const detail::tvec4< T > &  z,
const detail::tvec4< U > &  c,
const detail::tvec4< T > &  w,
const detail::tvec4< U > &  d 
)

Definition at line 758 of file associated_min_max.inl.

References max(), and T.

764 {
765  detail::tvec4<U> Result;
766  for(typename detail::tvec4<U>::size_type i = 0; i < detail::tvec4<U>::value_size; ++i)
767  {
768  T Test1 = max(x[i], y[i]);
769  T Test2 = max(z[i], w[i]);
770  U Result1 = x[i] > y[i] ? a[i] : b[i];
771  U Result2 = z[i] > w[i] ? c[i] : d[i];
772  Result[i] = Test1 > Test2 ? Result1 : Result2;
773  }
774  return Result;
775 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLM_FUNC_DECL genType max(genType const &x, genType const &y)
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec2<U> glm::associatedMax ( x,
const detail::tvec2< U > &  a,
y,
const detail::tvec2< U > &  b,
z,
const detail::tvec2< U > &  c,
w,
const detail::tvec2< U > &  d 
)

Definition at line 780 of file associated_min_max.inl.

References max(), and T.

786 {
787  T Test1 = max(x, y);
788  T Test2 = max(z, w);
789 
790  detail::tvec2<U> Result;
791  for(typename detail::tvec2<U>::size_type i = 0; i < detail::tvec2<U>::value_size; ++i)
792  {
793  U Result1 = x > y ? a[i] : b[i];
794  U Result2 = z > w ? c[i] : d[i];
795  Result[i] = Test1 > Test2 ? Result1 : Result2;
796  }
797  return Result;
798 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLM_FUNC_DECL genType max(genType const &x, genType const &y)
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec3<U> glm::associatedMax ( x,
const detail::tvec3< U > &  a,
y,
const detail::tvec3< U > &  b,
z,
const detail::tvec3< U > &  c,
w,
const detail::tvec3< U > &  d 
)

Definition at line 803 of file associated_min_max.inl.

References max(), and T.

809 {
810  T Test1 = max(x, y);
811  T Test2 = max(z, w);
812 
813  detail::tvec3<U> Result;
814  for(typename detail::tvec3<U>::size_type i = 0; i < detail::tvec3<U>::value_size; ++i)
815  {
816  U Result1 = x > y ? a[i] : b[i];
817  U Result2 = z > w ? c[i] : d[i];
818  Result[i] = Test1 > Test2 ? Result1 : Result2;
819  }
820  return Result;
821 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLM_FUNC_DECL genType max(genType const &x, genType const &y)
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec4<U> glm::associatedMax ( x,
const detail::tvec4< U > &  a,
y,
const detail::tvec4< U > &  b,
z,
const detail::tvec4< U > &  c,
w,
const detail::tvec4< U > &  d 
)

Definition at line 826 of file associated_min_max.inl.

References max(), and T.

832 {
833  T Test1 = max(x, y);
834  T Test2 = max(z, w);
835 
836  detail::tvec4<U> Result;
837  for(typename detail::tvec4<U>::size_type i = 0; i < detail::tvec4<U>::value_size; ++i)
838  {
839  U Result1 = x > y ? a[i] : b[i];
840  U Result2 = z > w ? c[i] : d[i];
841  Result[i] = Test1 > Test2 ? Result1 : Result2;
842  }
843  return Result;
844 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLM_FUNC_DECL genType max(genType const &x, genType const &y)
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec2<U> glm::associatedMax ( const detail::tvec2< T > &  x,
a,
const detail::tvec2< T > &  y,
b,
const detail::tvec2< T > &  z,
c,
const detail::tvec2< T > &  w,
d 
)

Definition at line 849 of file associated_min_max.inl.

References max(), and T.

855 {
856  detail::tvec2<U> Result;
857  for(typename detail::tvec2<T>::size_type i = 0; i < detail::tvec2<T>::value_size(); ++i)
858  {
859  T Test1 = max(x[i], y[i]);
860  T Test2 = max(z[i], w[i]);;
861  U Result1 = x[i] > y[i] ? a : b;
862  U Result2 = z[i] > w[i] ? c : d;
863  Result[i] = Test1 > Test2 ? Result1 : Result2;
864  }
865  return Result;
866 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLM_FUNC_DECL genType max(genType const &x, genType const &y)
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec3<U> glm::associatedMax ( const detail::tvec3< T > &  x,
a,
const detail::tvec3< T > &  y,
b,
const detail::tvec3< T > &  z,
c,
const detail::tvec3< T > &  w,
d 
)

Definition at line 871 of file associated_min_max.inl.

References max(), and T.

877 {
878  detail::tvec3<U> Result;
879  for(typename detail::tvec3<T>::size_type i = 0; i < detail::tvec3<T>::value_size(); ++i)
880  {
881  T Test1 = max(x[i], y[i]);
882  T Test2 = max(z[i], w[i]);;
883  U Result1 = x[i] > y[i] ? a : b;
884  U Result2 = z[i] > w[i] ? c : d;
885  Result[i] = Test1 > Test2 ? Result1 : Result2;
886  }
887  return Result;
888 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLM_FUNC_DECL genType max(genType const &x, genType const &y)
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec4<U> glm::associatedMax ( const detail::tvec4< T > &  x,
a,
const detail::tvec4< T > &  y,
b,
const detail::tvec4< T > &  z,
c,
const detail::tvec4< T > &  w,
d 
)

Definition at line 893 of file associated_min_max.inl.

References max(), and T.

899 {
900  detail::tvec4<U> Result;
901  for(typename detail::tvec4<T>::size_type i = 0; i < detail::tvec4<T>::value_size(); ++i)
902  {
903  T Test1 = max(x[i], y[i]);
904  T Test2 = max(z[i], w[i]);;
905  U Result1 = x[i] > y[i] ? a : b;
906  U Result2 = z[i] > w[i] ? c : d;
907  Result[i] = Test1 > Test2 ? Result1 : Result2;
908  }
909  return Result;
910 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLM_FUNC_DECL genType max(genType const &x, genType const &y)
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<typename T , typename U >
GLM_FUNC_QUALIFIER U glm::associatedMin ( x,
a,
y,
b 
)

Definition at line 14 of file associated_min_max.inl.

15 {
16  return x < y ? a : b;
17 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec2<U> glm::associatedMin ( const detail::tvec2< T > &  x,
const detail::tvec2< U > &  a,
const detail::tvec2< T > &  y,
const detail::tvec2< U > &  b 
)

Definition at line 21 of file associated_min_max.inl.

25 {
26  detail::tvec2<U> Result;
27  //Result.x = x[0] < y[0] ? a[0] : b[0];
28  //Result.y = x[1] < y[1] ? a[1] : b[1];
29  for(typename detail::tvec2<U>::size_type i = 0; i < detail::tvec2<U>::value_size; ++i)
30  Result[i] = x[i] < y[i] ? a[i] : b[i];
31  return Result;
32 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec3<U> glm::associatedMin ( const detail::tvec3< T > &  x,
const detail::tvec3< U > &  a,
const detail::tvec3< T > &  y,
const detail::tvec3< U > &  b 
)

Definition at line 36 of file associated_min_max.inl.

40 {
41  detail::tvec3<U> Result;
42  for(typename detail::tvec3<U>::size_type i = 0; i < detail::tvec3<U>::value_size; ++i)
43  Result[i] = x[i] < y[i] ? a[i] : b[i];
44  return Result;
45 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec4<U> glm::associatedMin ( const detail::tvec4< T > &  x,
const detail::tvec4< U > &  a,
const detail::tvec4< T > &  y,
const detail::tvec4< U > &  b 
)

Definition at line 49 of file associated_min_max.inl.

53 {
54  detail::tvec4<U> Result;
55  for(typename detail::tvec4<U>::size_type i = 0; i < detail::tvec4<U>::value_size; ++i)
56  Result[i] = x[i] < y[i] ? a[i] : b[i];
57  return Result;
58 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec2<U> glm::associatedMin ( x,
const detail::tvec2< U > &  a,
y,
const detail::tvec2< U > &  b 
)

Definition at line 62 of file associated_min_max.inl.

66 {
67  detail::tvec2<U> Result;
68  for(typename detail::tvec2<U>::size_type i = 0; i < detail::tvec2<U>::value_size; ++i)
69  Result[i] = x < y ? a[i] : b[i];
70  return Result;
71 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec3<U> glm::associatedMin ( x,
const detail::tvec3< U > &  a,
y,
const detail::tvec3< U > &  b 
)

Definition at line 75 of file associated_min_max.inl.

79 {
80  detail::tvec3<U> Result;
81  for(typename detail::tvec3<U>::size_type i = 0; i < detail::tvec3<U>::value_size; ++i)
82  Result[i] = x < y ? a[i] : b[i];
83  return Result;
84 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec4<U> glm::associatedMin ( x,
const detail::tvec4< U > &  a,
y,
const detail::tvec4< U > &  b 
)

Definition at line 88 of file associated_min_max.inl.

92 {
93  detail::tvec4<U> Result;
94  for(typename detail::tvec4<U>::size_type i = 0; i < detail::tvec4<U>::value_size; ++i)
95  Result[i] = x < y ? a[i] : b[i];
96  return Result;
97 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec2<U> glm::associatedMin ( const detail::tvec2< T > &  x,
a,
const detail::tvec2< T > &  y,
b 
)

Definition at line 101 of file associated_min_max.inl.

105 {
106  detail::tvec2<U> Result;
107  for(typename detail::tvec2<U>::size_type i = 0; i < detail::tvec2<T>::value_size(); ++i)
108  Result[i] = x[i] < y[i] ? a : b;
109  return Result;
110 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec3<U> glm::associatedMin ( const detail::tvec3< T > &  x,
a,
const detail::tvec3< T > &  y,
b 
)

Definition at line 114 of file associated_min_max.inl.

118 {
119  detail::tvec3<U> Result;
120  for(typename detail::tvec3<U>::size_type i = 0; i < detail::tvec3<T>::value_size(); ++i)
121  Result[i] = x[i] < y[i] ? a : b;
122  return Result;
123 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec4<U> glm::associatedMin ( const detail::tvec4< T > &  x,
a,
const detail::tvec4< T > &  y,
b 
)

Definition at line 127 of file associated_min_max.inl.

131 {
132  detail::tvec4<U> Result;
133  for(typename detail::tvec4<U>::size_type i = 0; i < detail::tvec4<T>::value_size(); ++i)
134  Result[i] = x[i] < y[i] ? a : b;
135  return Result;
136 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER U glm::associatedMin ( x,
a,
y,
b,
z,
c 
)

Definition at line 141 of file associated_min_max.inl.

146 {
147  U Result = x < y ? (x < z ? a : c) : (y < z ? b : c);
148  return Result;
149 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec2<U> glm::associatedMin ( const detail::tvec2< T > &  x,
const detail::tvec2< U > &  a,
const detail::tvec2< T > &  y,
const detail::tvec2< U > &  b,
const detail::tvec2< T > &  z,
const detail::tvec2< U > &  c 
)

Definition at line 153 of file associated_min_max.inl.

158 {
159  detail::tvec2<U> Result;
160  for(typename detail::tvec2<U>::size_type i = 0; i < detail::tvec2<U>::value_size; ++i)
161  Result[i] = x[i] < y[i] ? (x[i] < z[i] ? a[i] : c[i]) : (y[i] < z[i] ? b[i] : c[i]);
162  return Result;
163 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec3<U> glm::associatedMin ( const detail::tvec3< T > &  x,
const detail::tvec3< U > &  a,
const detail::tvec3< T > &  y,
const detail::tvec3< U > &  b,
const detail::tvec3< T > &  z,
const detail::tvec3< U > &  c 
)

Definition at line 167 of file associated_min_max.inl.

172 {
173  detail::tvec3<U> Result;
174  for(typename detail::tvec3<U>::size_type i = 0; i < detail::tvec3<U>::value_size; ++i)
175  Result[i] = x[i] < y[i] ? (x[i] < z[i] ? a[i] : c[i]) : (y[i] < z[i] ? b[i] : c[i]);
176  return Result;
177 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec4<U> glm::associatedMin ( const detail::tvec4< T > &  x,
const detail::tvec4< U > &  a,
const detail::tvec4< T > &  y,
const detail::tvec4< U > &  b,
const detail::tvec4< T > &  z,
const detail::tvec4< U > &  c 
)

Definition at line 181 of file associated_min_max.inl.

186 {
187  detail::tvec4<U> Result;
188  for(typename detail::tvec4<U>::size_type i = 0; i < detail::tvec4<U>::value_size; ++i)
189  Result[i] = x[i] < y[i] ? (x[i] < z[i] ? a[i] : c[i]) : (y[i] < z[i] ? b[i] : c[i]);
190  return Result;
191 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , typename U >
GLM_FUNC_QUALIFIER U glm::associatedMin ( x,
a,
y,
b,
z,
c,
w,
d 
)

Definition at line 196 of file associated_min_max.inl.

References min(), and T.

202 {
203  T Test1 = min(x, y);
204  T Test2 = min(z, w);;
205  U Result1 = x < y ? a : b;
206  U Result2 = z < w ? c : d;
207  U Result = Test1 < Test2 ? Result1 : Result2;
208  return Result;
209 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLM_FUNC_DECL genType min(genType const &x, genType const &y)
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec2<U> glm::associatedMin ( const detail::tvec2< T > &  x,
const detail::tvec2< U > &  a,
const detail::tvec2< T > &  y,
const detail::tvec2< U > &  b,
const detail::tvec2< T > &  z,
const detail::tvec2< U > &  c,
const detail::tvec2< T > &  w,
const detail::tvec2< U > &  d 
)

Definition at line 214 of file associated_min_max.inl.

References min(), and T.

220 {
221  detail::tvec2<U> Result;
222  for(typename detail::tvec2<U>::size_type i = 0; i < detail::tvec2<U>::value_size; ++i)
223  {
224  T Test1 = min(x[i], y[i]);
225  T Test2 = min(z[i], w[i]);
226  U Result1 = x[i] < y[i] ? a[i] : b[i];
227  U Result2 = z[i] < w[i] ? c[i] : d[i];
228  Result[i] = Test1 < Test2 ? Result1 : Result2;
229  }
230  return Result;
231 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLM_FUNC_DECL genType min(genType const &x, genType const &y)
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec3<U> glm::associatedMin ( const detail::tvec3< T > &  x,
const detail::tvec3< U > &  a,
const detail::tvec3< T > &  y,
const detail::tvec3< U > &  b,
const detail::tvec3< T > &  z,
const detail::tvec3< U > &  c,
const detail::tvec3< T > &  w,
const detail::tvec3< U > &  d 
)

Definition at line 236 of file associated_min_max.inl.

References min(), and T.

242 {
243  detail::tvec3<U> Result;
244  for(typename detail::tvec3<U>::size_type i = 0; i < detail::tvec3<U>::value_size; ++i)
245  {
246  T Test1 = min(x[i], y[i]);
247  T Test2 = min(z[i], w[i]);
248  U Result1 = x[i] < y[i] ? a[i] : b[i];
249  U Result2 = z[i] < w[i] ? c[i] : d[i];
250  Result[i] = Test1 < Test2 ? Result1 : Result2;
251  }
252  return Result;
253 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLM_FUNC_DECL genType min(genType const &x, genType const &y)
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec4<U> glm::associatedMin ( const detail::tvec4< T > &  x,
const detail::tvec4< U > &  a,
const detail::tvec4< T > &  y,
const detail::tvec4< U > &  b,
const detail::tvec4< T > &  z,
const detail::tvec4< U > &  c,
const detail::tvec4< T > &  w,
const detail::tvec4< U > &  d 
)

Definition at line 258 of file associated_min_max.inl.

References min(), and T.

264 {
265  detail::tvec4<U> Result;
266  for(typename detail::tvec4<U>::size_type i = 0; i < detail::tvec4<U>::value_size; ++i)
267  {
268  T Test1 = min(x[i], y[i]);
269  T Test2 = min(z[i], w[i]);
270  U Result1 = x[i] < y[i] ? a[i] : b[i];
271  U Result2 = z[i] < w[i] ? c[i] : d[i];
272  Result[i] = Test1 < Test2 ? Result1 : Result2;
273  }
274  return Result;
275 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLM_FUNC_DECL genType min(genType const &x, genType const &y)
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec2<U> glm::associatedMin ( x,
const detail::tvec2< U > &  a,
y,
const detail::tvec2< U > &  b,
z,
const detail::tvec2< U > &  c,
w,
const detail::tvec2< U > &  d 
)

Definition at line 280 of file associated_min_max.inl.

References min(), and T.

286 {
287  T Test1 = min(x, y);
288  T Test2 = min(z, w);
289 
290  detail::tvec2<U> Result;
291  for(typename detail::tvec2<U>::size_type i = 0; i < detail::tvec2<U>::value_size; ++i)
292  {
293  U Result1 = x < y ? a[i] : b[i];
294  U Result2 = z < w ? c[i] : d[i];
295  Result[i] = Test1 < Test2 ? Result1 : Result2;
296  }
297  return Result;
298 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLM_FUNC_DECL genType min(genType const &x, genType const &y)
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec3<U> glm::associatedMin ( x,
const detail::tvec3< U > &  a,
y,
const detail::tvec3< U > &  b,
z,
const detail::tvec3< U > &  c,
w,
const detail::tvec3< U > &  d 
)

Definition at line 303 of file associated_min_max.inl.

References min(), and T.

309 {
310  T Test1 = min(x, y);
311  T Test2 = min(z, w);
312 
313  detail::tvec3<U> Result;
314  for(typename detail::tvec3<U>::size_type i = 0; i < detail::tvec3<U>::value_size; ++i)
315  {
316  U Result1 = x < y ? a[i] : b[i];
317  U Result2 = z < w ? c[i] : d[i];
318  Result[i] = Test1 < Test2 ? Result1 : Result2;
319  }
320  return Result;
321 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLM_FUNC_DECL genType min(genType const &x, genType const &y)
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec4<U> glm::associatedMin ( x,
const detail::tvec4< U > &  a,
y,
const detail::tvec4< U > &  b,
z,
const detail::tvec4< U > &  c,
w,
const detail::tvec4< U > &  d 
)

Definition at line 326 of file associated_min_max.inl.

References min(), and T.

332 {
333  T Test1 = min(x, y);
334  T Test2 = min(z, w);
335 
336  detail::tvec4<U> Result;
337  for(typename detail::tvec4<U>::size_type i = 0; i < detail::tvec4<U>::value_size; ++i)
338  {
339  U Result1 = x < y ? a[i] : b[i];
340  U Result2 = z < w ? c[i] : d[i];
341  Result[i] = Test1 < Test2 ? Result1 : Result2;
342  }
343  return Result;
344 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLM_FUNC_DECL genType min(genType const &x, genType const &y)
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec2<U> glm::associatedMin ( const detail::tvec2< T > &  x,
a,
const detail::tvec2< T > &  y,
b,
const detail::tvec2< T > &  z,
c,
const detail::tvec2< T > &  w,
d 
)

Definition at line 349 of file associated_min_max.inl.

References min(), and T.

355 {
356  detail::tvec2<U> Result;
357  for(typename detail::tvec2<T>::size_type i = 0; i < detail::tvec2<T>::value_size(); ++i)
358  {
359  T Test1 = min(x[i], y[i]);
360  T Test2 = min(z[i], w[i]);;
361  U Result1 = x[i] < y[i] ? a : b;
362  U Result2 = z[i] < w[i] ? c : d;
363  Result[i] = Test1 < Test2 ? Result1 : Result2;
364  }
365  return Result;
366 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLM_FUNC_DECL genType min(genType const &x, genType const &y)
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec3<U> glm::associatedMin ( const detail::tvec3< T > &  x,
a,
const detail::tvec3< T > &  y,
b,
const detail::tvec3< T > &  z,
c,
const detail::tvec3< T > &  w,
d 
)

Definition at line 371 of file associated_min_max.inl.

References min(), and T.

377 {
378  detail::tvec3<U> Result;
379  for(typename detail::tvec3<T>::size_type i = 0; i < detail::tvec3<T>::value_size(); ++i)
380  {
381  T Test1 = min(x[i], y[i]);
382  T Test2 = min(z[i], w[i]);;
383  U Result1 = x[i] < y[i] ? a : b;
384  U Result2 = z[i] < w[i] ? c : d;
385  Result[i] = Test1 < Test2 ? Result1 : Result2;
386  }
387  return Result;
388 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLM_FUNC_DECL genType min(genType const &x, genType const &y)
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<typename T , typename U >
GLM_FUNC_QUALIFIER detail::tvec4<U> glm::associatedMin ( const detail::tvec4< T > &  x,
a,
const detail::tvec4< T > &  y,
b,
const detail::tvec4< T > &  z,
c,
const detail::tvec4< T > &  w,
d 
)

Definition at line 393 of file associated_min_max.inl.

References min(), and T.

399 {
400  detail::tvec4<U> Result;
401  for(typename detail::tvec4<T>::size_type i = 0; i < detail::tvec4<T>::value_size(); ++i)
402  {
403  T Test1 = min(x[i], y[i]);
404  T Test2 = min(z[i], w[i]);;
405  U Result1 = x[i] < y[i] ? a : b;
406  U Result2 = z[i] < w[i] ? c : d;
407  Result[i] = Test1 < Test2 ? Result1 : Result2;
408  }
409  return Result;
410 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLM_FUNC_DECL genType min(genType const &x, genType const &y)
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::axis ( detail::tquat< T > const &  x)

Definition at line 746 of file quaternion.inl.

References sqrt(), T, glm::detail::tquat< T >::w, glm::detail::tquat< T >::x, glm::detail::tquat< T >::y, and glm::detail::tquat< T >::z.

749  {
750  T tmp1 = T(1) - x.w * x.w;
751  if(tmp1 <= T(0))
752  return detail::tvec3<T>(0, 0, 1);
753  T tmp2 = T(1) / sqrt(tmp1);
754  return detail::tvec3<T>(x.x * tmp2, x.y * tmp2, x.z * tmp2);
755  }
GLM_FUNC_DECL genType sqrt(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename genIUType >
GLM_FUNC_QUALIFIER int glm::bitCount ( genIUType const &  Value)

Definition at line 422 of file func_integer.inl.

References GLM_STATIC_ASSERT.

423  {
424  GLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer, "'bitCount' only accept integer values");
425 
426  int Count = 0;
427  for(std::size_t i = 0; i < sizeof(genIUType) * std::size_t(8); ++i)
428  {
429  if(Value & (1 << i))
430  ++Count;
431  }
432  return Count;
433  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
unsigned int size_t
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<int> glm::bitCount ( detail::tvec2< T > const &  value)

Definition at line 437 of file func_integer.inl.

References bitCount().

440  {
441  return detail::tvec2<int>(
442  bitCount(value[0]),
443  bitCount(value[1]));
444  }
GLM_FUNC_QUALIFIER detail::tvec4< int > bitCount(detail::tvec4< T > const &value)
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<int> glm::bitCount ( detail::tvec3< T > const &  value)

Definition at line 448 of file func_integer.inl.

References bitCount().

451  {
452  return detail::tvec3<int>(
453  bitCount(value[0]),
454  bitCount(value[1]),
455  bitCount(value[2]));
456  }
GLM_FUNC_QUALIFIER detail::tvec4< int > bitCount(detail::tvec4< T > const &value)
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<int> glm::bitCount ( detail::tvec4< T > const &  value)

Definition at line 460 of file func_integer.inl.

References bitCount().

463  {
464  return detail::tvec4<int>(
465  bitCount(value[0]),
466  bitCount(value[1]),
467  bitCount(value[2]),
468  bitCount(value[3]));
469  }
GLM_FUNC_QUALIFIER detail::tvec4< int > bitCount(detail::tvec4< T > const &value)
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::bitfieldExtract ( detail::tvec2< T > const &  Value,
int const &  Offset,
int const &  Bits 
)

Definition at line 296 of file func_integer.inl.

References bitfieldExtract().

301  {
302  return detail::tvec2<T>(
303  bitfieldExtract(Value[0], Offset, Bits),
304  bitfieldExtract(Value[1], Offset, Bits));
305  }
GLM_FUNC_QUALIFIER detail::tvec4< T > bitfieldExtract(detail::tvec4< T > const &Value, int const &Offset, int const &Bits)
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::bitfieldExtract ( detail::tvec3< T > const &  Value,
int const &  Offset,
int const &  Bits 
)

Definition at line 309 of file func_integer.inl.

References bitfieldExtract().

314  {
315  return detail::tvec3<T>(
316  bitfieldExtract(Value[0], Offset, Bits),
317  bitfieldExtract(Value[1], Offset, Bits),
318  bitfieldExtract(Value[2], Offset, Bits));
319  }
GLM_FUNC_QUALIFIER detail::tvec4< T > bitfieldExtract(detail::tvec4< T > const &Value, int const &Offset, int const &Bits)
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::bitfieldExtract ( detail::tvec4< T > const &  Value,
int const &  Offset,
int const &  Bits 
)

Definition at line 323 of file func_integer.inl.

References bitfieldExtract().

328  {
329  return detail::tvec4<T>(
330  bitfieldExtract(Value[0], Offset, Bits),
331  bitfieldExtract(Value[1], Offset, Bits),
332  bitfieldExtract(Value[2], Offset, Bits),
333  bitfieldExtract(Value[3], Offset, Bits));
334  }
GLM_FUNC_QUALIFIER detail::tvec4< T > bitfieldExtract(detail::tvec4< T > const &Value, int const &Offset, int const &Bits)
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::bitfieldInsert ( detail::tvec2< T > const &  Base,
detail::tvec2< T > const &  Insert,
int const &  Offset,
int const &  Bits 
)

Definition at line 361 of file func_integer.inl.

References bitfieldInsert().

367  {
368  return detail::tvec2<T>(
369  bitfieldInsert(Base[0], Insert[0], Offset, Bits),
370  bitfieldInsert(Base[1], Insert[1], Offset, Bits));
371  }
GLM_FUNC_QUALIFIER detail::tvec4< T > bitfieldInsert(detail::tvec4< T > const &Base, detail::tvec4< T > const &Insert, int const &Offset, int const &Bits)
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::bitfieldInsert ( detail::tvec3< T > const &  Base,
detail::tvec3< T > const &  Insert,
int const &  Offset,
int const &  Bits 
)

Definition at line 375 of file func_integer.inl.

References bitfieldInsert().

381  {
382  return detail::tvec3<T>(
383  bitfieldInsert(Base[0], Insert[0], Offset, Bits),
384  bitfieldInsert(Base[1], Insert[1], Offset, Bits),
385  bitfieldInsert(Base[2], Insert[2], Offset, Bits));
386  }
GLM_FUNC_QUALIFIER detail::tvec4< T > bitfieldInsert(detail::tvec4< T > const &Base, detail::tvec4< T > const &Insert, int const &Offset, int const &Bits)
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::bitfieldInsert ( detail::tvec4< T > const &  Base,
detail::tvec4< T > const &  Insert,
int const &  Offset,
int const &  Bits 
)

Definition at line 390 of file func_integer.inl.

References bitfieldInsert().

396  {
397  return detail::tvec4<T>(
398  bitfieldInsert(Base[0], Insert[0], Offset, Bits),
399  bitfieldInsert(Base[1], Insert[1], Offset, Bits),
400  bitfieldInsert(Base[2], Insert[2], Offset, Bits),
401  bitfieldInsert(Base[3], Insert[3], Offset, Bits));
402  }
GLM_FUNC_QUALIFIER detail::tvec4< T > bitfieldInsert(detail::tvec4< T > const &Base, detail::tvec4< T > const &Insert, int const &Offset, int const &Bits)
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec2<valType> glm::bitRotateLeft ( detail::tvec2< valType > const &  Value,
std::size_t  Shift 
)

Definition at line 530 of file bit.inl.

References bitRotateLeft().

534  {
535  return detail::tvec2<valType>(
536  bitRotateLeft(Value[0], Shift),
537  bitRotateLeft(Value[1], Shift));
538  }
GLM_FUNC_QUALIFIER detail::tvec4< valType > bitRotateLeft(detail::tvec4< valType > const &Value, std::size_t Shift)
Definition: bit.inl:555
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec3<valType> glm::bitRotateLeft ( detail::tvec3< valType > const &  Value,
std::size_t  Shift 
)

Definition at line 542 of file bit.inl.

References bitRotateLeft().

546  {
547  return detail::tvec3<valType>(
548  bitRotateLeft(Value[0], Shift),
549  bitRotateLeft(Value[1], Shift),
550  bitRotateLeft(Value[2], Shift));
551  }
GLM_FUNC_QUALIFIER detail::tvec4< valType > bitRotateLeft(detail::tvec4< valType > const &Value, std::size_t Shift)
Definition: bit.inl:555
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec4<valType> glm::bitRotateLeft ( detail::tvec4< valType > const &  Value,
std::size_t  Shift 
)

Definition at line 555 of file bit.inl.

References bitRotateLeft().

559  {
560  return detail::tvec4<valType>(
561  bitRotateLeft(Value[0], Shift),
562  bitRotateLeft(Value[1], Shift),
563  bitRotateLeft(Value[2], Shift),
564  bitRotateLeft(Value[3], Shift));
565  }
GLM_FUNC_QUALIFIER detail::tvec4< valType > bitRotateLeft(detail::tvec4< valType > const &Value, std::size_t Shift)
Definition: bit.inl:555
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec2<valType> glm::bitRotateRight ( detail::tvec2< valType > const &  Value,
std::size_t  Shift 
)

Definition at line 482 of file bit.inl.

References bitRotateRight().

486  {
487  return detail::tvec2<valType>(
488  bitRotateRight(Value[0], Shift),
489  bitRotateRight(Value[1], Shift));
490  }
GLM_FUNC_QUALIFIER detail::tvec4< valType > bitRotateRight(detail::tvec4< valType > const &Value, std::size_t Shift)
Definition: bit.inl:507
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec3<valType> glm::bitRotateRight ( detail::tvec3< valType > const &  Value,
std::size_t  Shift 
)

Definition at line 494 of file bit.inl.

References bitRotateRight().

498  {
499  return detail::tvec3<valType>(
500  bitRotateRight(Value[0], Shift),
501  bitRotateRight(Value[1], Shift),
502  bitRotateRight(Value[2], Shift));
503  }
GLM_FUNC_QUALIFIER detail::tvec4< valType > bitRotateRight(detail::tvec4< valType > const &Value, std::size_t Shift)
Definition: bit.inl:507
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec4<valType> glm::bitRotateRight ( detail::tvec4< valType > const &  Value,
std::size_t  Shift 
)

Definition at line 507 of file bit.inl.

References bitRotateRight().

511  {
512  return detail::tvec4<valType>(
513  bitRotateRight(Value[0], Shift),
514  bitRotateRight(Value[1], Shift),
515  bitRotateRight(Value[2], Shift),
516  bitRotateRight(Value[3], Shift));
517  }
GLM_FUNC_QUALIFIER detail::tvec4< valType > bitRotateRight(detail::tvec4< valType > const &Value, std::size_t Shift)
Definition: bit.inl:507
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::ceil ( detail::fvec4SIMD const &  x)

Definition at line 348 of file simd_vec4.inl.

References glm::detail::sse_ceil_ps().

351 {
352  return detail::sse_ceil_ps(x.Data);
353 }
GLM_FUNC_QUALIFIER __m128 sse_ceil_ps(__m128 x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::clamp ( detail::tvec2< T > const &  Texcoord)

Definition at line 26 of file wrap.inl.

References clamp().

29  {
30  detail::tvec2<T> Result;
31  for(typename detail::tvec2<T>::size_type i = 0; i < detail::tvec2<T>::value_size(); ++i)
32  Result[i] = clamp(Texcoord[i]);
33  return Result;
34  }
GLM_FUNC_QUALIFIER detail::tvec4< T > clamp(detail::tvec4< T > const &Texcoord)
Definition: wrap.inl:50
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::clamp ( detail::tvec3< T > const &  Texcoord)

Definition at line 38 of file wrap.inl.

References clamp().

41  {
42  detail::tvec3<T> Result;
43  for(typename detail::tvec3<T>::size_type i = 0; i < detail::tvec3<T>::value_size(); ++i)
44  Result[i] = clamp(Texcoord[i]);
45  return Result;
46  }
GLM_FUNC_QUALIFIER detail::tvec4< T > clamp(detail::tvec4< T > const &Texcoord)
Definition: wrap.inl:50
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::clamp ( detail::tvec4< T > const &  Texcoord)

Definition at line 50 of file wrap.inl.

References clamp().

53  {
54  detail::tvec4<T> Result;
55  for(typename detail::tvec4<T>::size_type i = 0; i < detail::tvec4<T>::value_size(); ++i)
56  Result[i] = clamp(Texcoord[i]);
57  return Result;
58  }
GLM_FUNC_QUALIFIER detail::tvec4< T > clamp(detail::tvec4< T > const &Texcoord)
Definition: wrap.inl:50
template<typename valType >
GLM_FUNC_QUALIFIER valType glm::clamp ( valType const &  x,
valType const &  minVal,
valType const &  maxVal 
)

Definition at line 324 of file func_common.inl.

References GLM_STATIC_ASSERT, max(), and min().

329  {
331  detail::type<valType>::is_float ||
332  detail::type<valType>::is_int ||
333  detail::type<valType>::is_uint, "'clamp' only accept numbers");
334 
335  return min(maxVal, max(minVal, x));
336  }
GLM_FUNC_QUALIFIER genType min(genType const &x, genType const &y)
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLM_FUNC_QUALIFIER genType max(genType const &x, genType const &y)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::clamp ( detail::tvec2< T > const &  x,
typename detail::tvec2< T >::value_type const &  minVal,
typename detail::tvec2< T >::value_type const &  maxVal 
)

Definition at line 340 of file func_common.inl.

References clamp(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

345  {
346  return detail::tvec2<T>(
347  clamp(x.x, minVal, maxVal),
348  clamp(x.y, minVal, maxVal));
349  }
GLM_FUNC_QUALIFIER detail::tvec4< T > clamp(detail::tvec4< T > const &x, detail::tvec4< T > const &minVal, detail::tvec4< T > const &maxVal)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::clamp ( detail::tvec3< T > const &  x,
typename detail::tvec3< T >::value_type const &  minVal,
typename detail::tvec3< T >::value_type const &  maxVal 
)

Definition at line 353 of file func_common.inl.

References clamp(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

358  {
359  return detail::tvec3<T>(
360  clamp(x.x, minVal, maxVal),
361  clamp(x.y, minVal, maxVal),
362  clamp(x.z, minVal, maxVal));
363  }
GLM_FUNC_QUALIFIER detail::tvec4< T > clamp(detail::tvec4< T > const &x, detail::tvec4< T > const &minVal, detail::tvec4< T > const &maxVal)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::clamp ( detail::tvec4< T > const &  x,
typename detail::tvec4< T >::value_type const &  minVal,
typename detail::tvec4< T >::value_type const &  maxVal 
)

Definition at line 367 of file func_common.inl.

References clamp(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

372  {
373  return detail::tvec4<T>(
374  clamp(x.x, minVal, maxVal),
375  clamp(x.y, minVal, maxVal),
376  clamp(x.z, minVal, maxVal),
377  clamp(x.w, minVal, maxVal));
378  }
GLM_FUNC_QUALIFIER detail::tvec4< T > clamp(detail::tvec4< T > const &x, detail::tvec4< T > const &minVal, detail::tvec4< T > const &maxVal)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::clamp ( detail::tvec2< T > const &  x,
detail::tvec2< T > const &  minVal,
detail::tvec2< T > const &  maxVal 
)

Definition at line 382 of file func_common.inl.

References clamp(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

387  {
388  return detail::tvec2<T>(
389  clamp(x.x, minVal.x, maxVal.x),
390  clamp(x.y, minVal.y, maxVal.y));
391  }
GLM_FUNC_QUALIFIER detail::tvec4< T > clamp(detail::tvec4< T > const &x, detail::tvec4< T > const &minVal, detail::tvec4< T > const &maxVal)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::clamp ( detail::tvec3< T > const &  x,
detail::tvec3< T > const &  minVal,
detail::tvec3< T > const &  maxVal 
)

Definition at line 395 of file func_common.inl.

References clamp(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

400  {
401  return detail::tvec3<T>(
402  clamp(x.x, minVal.x, maxVal.x),
403  clamp(x.y, minVal.y, maxVal.y),
404  clamp(x.z, minVal.z, maxVal.z));
405  }
GLM_FUNC_QUALIFIER detail::tvec4< T > clamp(detail::tvec4< T > const &x, detail::tvec4< T > const &minVal, detail::tvec4< T > const &maxVal)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::clamp ( detail::tvec4< T > const &  x,
detail::tvec4< T > const &  minVal,
detail::tvec4< T > const &  maxVal 
)

Definition at line 409 of file func_common.inl.

References clamp(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

414  {
415  return detail::tvec4<T>(
416  clamp(x.x, minVal.x, maxVal.x),
417  clamp(x.y, minVal.y, maxVal.y),
418  clamp(x.z, minVal.z, maxVal.z),
419  clamp(x.w, minVal.w, maxVal.w));
420  }
GLM_FUNC_QUALIFIER detail::tvec4< T > clamp(detail::tvec4< T > const &x, detail::tvec4< T > const &minVal, detail::tvec4< T > const &maxVal)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::clamp ( detail::fvec4SIMD const &  x,
detail::fvec4SIMD const &  minVal,
detail::fvec4SIMD const &  maxVal 
)

Definition at line 427 of file simd_vec4.inl.

References glm::detail::sse_clp_ps().

432 {
433  return detail::sse_clp_ps(x.Data, minVal.Data, maxVal.Data);
434 }
GLM_FUNC_QUALIFIER __m128 sse_clp_ps(__m128 v, __m128 minVal, __m128 maxVal)
TODO.
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::clamp ( detail::fvec4SIMD const &  x,
float const &  minVal,
float const &  maxVal 
)

Definition at line 437 of file simd_vec4.inl.

References glm::detail::sse_clp_ps().

442 {
443  return detail::sse_clp_ps(x.Data, _mm_set1_ps(minVal), _mm_set1_ps(maxVal));
444 }
GLM_FUNC_QUALIFIER __m128 sse_clp_ps(__m128 v, __m128 minVal, __m128 maxVal)
TODO.
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec3<valType> glm::closestPointOnLine ( detail::tvec3< valType > const &  point,
detail::tvec3< valType > const &  a,
detail::tvec3< valType > const &  b 
)

Definition at line 17 of file closest_point.inl.

References distance(), and dot().

22  {
23  valType LineLength = distance(a, b);
24  detail::tvec3<valType> Vector = point - a;
25  detail::tvec3<valType> LineDirection = (b - a) / LineLength;
26 
27  // Project Vector to LineDirection to get the distance of point from a
28  valType Distance = dot(Vector, LineDirection);
29 
30  if(Distance <= valType(0)) return a;
31  if(Distance >= LineLength) return b;
32  return a + LineDirection * Distance;
33  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLsizei GLsizei GLfloat distance
Definition: glew.h:12423
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::cross ( detail::tvec3< T > const &  x,
detail::tvec3< T > const &  y 
)

Definition at line 197 of file func_geometric.inl.

References GLM_STATIC_ASSERT, glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

201  {
202  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'cross' only accept floating-point inputs");
203 
204  return detail::tvec3<T>(
205  x.y * y.z - y.y * x.z,
206  x.z * y.x - y.z * x.x,
207  x.x * y.y - y.x * x.y);
208  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tquat<T> glm::cross ( detail::tquat< T > const &  q1,
detail::tquat< T > const &  q2 
)

Definition at line 354 of file quaternion.inl.

References glm::detail::tquat< T >::w, glm::detail::tquat< T >::x, glm::detail::tquat< T >::y, and glm::detail::tquat< T >::z.

358  {
359  return detail::tquat<T>(
360  q1.w * q2.w - q1.x * q2.x - q1.y * q2.y - q1.z * q2.z,
361  q1.w * q2.x + q1.x * q2.w + q1.y * q2.z - q1.z * q2.y,
362  q1.w * q2.y + q1.y * q2.w + q1.z * q2.x - q1.x * q2.z,
363  q1.w * q2.z + q1.z * q2.w + q1.x * q2.y - q1.y * q2.x);
364  }
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::cross ( detail::fvec4SIMD const &  x,
detail::fvec4SIMD const &  y 
)

Definition at line 635 of file simd_vec4.inl.

References glm::detail::sse_xpd_ps().

639 {
640  return detail::sse_xpd_ps(x.Data, y.Data);
641 }
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLM_FUNC_QUALIFIER __m128 sse_xpd_ps(__m128 v1, __m128 v2)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat2x2<T>::value_type glm::determinant ( detail::tmat2x2< T > const &  m)

Definition at line 421 of file func_matrix.inl.

References GLM_STATIC_ASSERT.

424  {
425  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'determinant' only accept floating-point inputs");
426 
427  return m[0][0] * m[1][1] - m[1][0] * m[0][1];
428  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat3x3<T>::value_type glm::determinant ( detail::tmat3x3< T > const &  m)

Definition at line 432 of file func_matrix.inl.

References GLM_STATIC_ASSERT.

435  {
436  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'determinant' only accept floating-point inputs");
437 
438  return
439  + m[0][0] * (m[1][1] * m[2][2] - m[2][1] * m[1][2])
440  - m[1][0] * (m[0][1] * m[2][2] - m[2][1] * m[0][2])
441  + m[2][0] * (m[0][1] * m[1][2] - m[1][1] * m[0][2]);
442  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat4x4<T>::value_type glm::determinant ( detail::tmat4x4< T > const &  m)

Definition at line 446 of file func_matrix.inl.

References GLM_STATIC_ASSERT, and T.

449  {
450  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'determinant' only accept floating-point inputs");
451 
452  T SubFactor00 = m[2][2] * m[3][3] - m[3][2] * m[2][3];
453  T SubFactor01 = m[2][1] * m[3][3] - m[3][1] * m[2][3];
454  T SubFactor02 = m[2][1] * m[3][2] - m[3][1] * m[2][2];
455  T SubFactor03 = m[2][0] * m[3][3] - m[3][0] * m[2][3];
456  T SubFactor04 = m[2][0] * m[3][2] - m[3][0] * m[2][2];
457  T SubFactor05 = m[2][0] * m[3][1] - m[3][0] * m[2][1];
458 
459  detail::tvec4<T> DetCof(
460  + (m[1][1] * SubFactor00 - m[1][2] * SubFactor01 + m[1][3] * SubFactor02),
461  - (m[1][0] * SubFactor00 - m[1][2] * SubFactor03 + m[1][3] * SubFactor04),
462  + (m[1][0] * SubFactor01 - m[1][1] * SubFactor03 + m[1][3] * SubFactor05),
463  - (m[1][0] * SubFactor02 - m[1][1] * SubFactor04 + m[1][2] * SubFactor05));
464 
465  return m[0][0] * DetCof[0]
466  + m[0][1] * DetCof[1]
467  + m[0][2] * DetCof[2]
468  + m[0][3] * DetCof[3];
469  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
GLM_FUNC_QUALIFIER float glm::determinant ( detail::fmat4x4SIMD const &  m)

Definition at line 576 of file simd_mat4.inl.

References glm::detail::sse_det_ps().

577 {
578  float Result;
579  _mm_store_ss(&Result, detail::sse_det_ps(&m[0].Data));
580  return Result;
581 }
const GLdouble * m
Definition: glew.h:8385
GLM_FUNC_QUALIFIER __m128 sse_det_ps(__m128 const m[4])
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T>::value_type glm::distance ( detail::tvec2< T > const &  p0,
detail::tvec2< T > const &  p1 
)

Definition at line 95 of file func_geometric.inl.

References GLM_STATIC_ASSERT, and length().

99  {
100  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'distance' only accept floating-point inputs");
101 
102  return length(p1 - p0);
103  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLM_FUNC_QUALIFIER detail::tvec4< T >::value_type length(detail::tvec4< T > const &v)
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T>::value_type glm::distance ( detail::tvec3< T > const &  p0,
detail::tvec3< T > const &  p1 
)

Definition at line 107 of file func_geometric.inl.

References GLM_STATIC_ASSERT, and length().

111  {
112  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'distance' only accept floating-point inputs");
113 
114  return length(p1 - p0);
115  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLM_FUNC_QUALIFIER detail::tvec4< T >::value_type length(detail::tvec4< T > const &v)
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T>::value_type glm::distance ( detail::tvec4< T > const &  p0,
detail::tvec4< T > const &  p1 
)

Definition at line 119 of file func_geometric.inl.

References GLM_STATIC_ASSERT, and length().

123  {
124  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'distance' only accept floating-point inputs");
125 
126  return length(p1 - p0);
127  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLM_FUNC_QUALIFIER detail::tvec4< T >::value_type length(detail::tvec4< T > const &v)
GLM_FUNC_QUALIFIER float glm::distance ( detail::fvec4SIMD const &  p0,
detail::fvec4SIMD const &  p1 
)

Definition at line 595 of file simd_vec4.inl.

References glm::detail::sse_dst_ps().

599 {
600  float Result = 0;
601  _mm_store_ss(&Result, detail::sse_dst_ps(p0.Data, p1.Data));
602  return Result;
603 }
GLM_FUNC_QUALIFIER __m128 sse_dst_ps(__m128 p0, __m128 p1)
template<typename T >
GLM_FUNC_QUALIFIER T glm::distance2 ( detail::tvec2< T > const &  p0,
detail::tvec2< T > const &  p1 
)

Definition at line 69 of file norm.inl.

References length2().

73  {
74  return length2(p1 - p0);
75  }
GLM_FUNC_QUALIFIER T length2(detail::tquat< T > const &q)
Definition: norm.inl:50
template<typename T >
GLM_FUNC_QUALIFIER T glm::distance2 ( detail::tvec3< T > const &  p0,
detail::tvec3< T > const &  p1 
)

Definition at line 79 of file norm.inl.

References length2().

83  {
84  return length2(p1 - p0);
85  }
GLM_FUNC_QUALIFIER T length2(detail::tquat< T > const &q)
Definition: norm.inl:50
template<typename T >
GLM_FUNC_QUALIFIER T glm::distance2 ( detail::tvec4< T > const &  p0,
detail::tvec4< T > const &  p1 
)

Definition at line 89 of file norm.inl.

References length2().

93  {
94  return length2(p1 - p0);
95  }
GLM_FUNC_QUALIFIER T length2(detail::tquat< T > const &q)
Definition: norm.inl:50
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::distance4 ( detail::fvec4SIMD const &  p0,
detail::fvec4SIMD const &  p1 
)

Definition at line 606 of file simd_vec4.inl.

References glm::detail::sse_dst_ps().

610 {
611  return detail::sse_dst_ps(p0.Data, p1.Data);
612 }
GLM_FUNC_QUALIFIER __m128 sse_dst_ps(__m128 p0, __m128 p1)
template<typename genType >
GLM_FUNC_QUALIFIER genType glm::div ( genType const &  a,
genType const &  b 
)

Definition at line 114 of file verbose_operator.inl.

115  {
116  return a / b;
117  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T>::value_type glm::dot ( detail::tvec2< T > const &  x,
detail::tvec2< T > const &  y 
)

Definition at line 144 of file func_geometric.inl.

References GLM_STATIC_ASSERT, glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

148  {
149  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'dot' only accept floating-point inputs");
150 
151  return x.x * y.x + x.y * y.y;
152  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER T glm::dot ( detail::tvec3< T > const &  x,
detail::tvec3< T > const &  y 
)

Definition at line 156 of file func_geometric.inl.

References GLM_STATIC_ASSERT, glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

160  {
161  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'dot' only accept floating-point inputs");
162 
163  return x.x * y.x + x.y * y.y + x.z * y.z;
164  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER T glm::dot ( detail::tvec4< T > const &  x,
detail::tvec4< T > const &  y 
)

Definition at line 184 of file func_geometric.inl.

References GLM_STATIC_ASSERT, glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

188  {
189  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'dot' only accept floating-point inputs");
190 
191  return x.x * y.x + x.y * y.y + x.z * y.z + x.w * y.w;
192  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER float glm::dot ( detail::fvec4SIMD const &  x,
detail::fvec4SIMD const &  y 
)

Definition at line 615 of file simd_vec4.inl.

References glm::detail::sse_dot_ss().

619 {
620  float Result = 0;
621  _mm_store_ss(&Result, detail::sse_dot_ss(x.Data, y.Data));
622  return Result;
623 }
GLM_FUNC_QUALIFIER __m128 sse_dot_ss(__m128 v1, __m128 v2)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::dot4 ( detail::fvec4SIMD const &  x,
detail::fvec4SIMD const &  y 
)

Definition at line 626 of file simd_vec4.inl.

References glm::detail::sse_dot_ps().

Referenced by fastLength4(), length4(), and niceLength4().

630 {
631  return detail::sse_dot_ps(x.Data, y.Data);
632 }
GLM_FUNC_QUALIFIER __m128 sse_dot_ps(__m128 v1, __m128 v2)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER bool glm::epsilonEqual ( glm::half const &  x,
glm::half const &  y,
glm::half const &  epsilon 
)

Definition at line 32 of file epsilon.inl.

References abs(), and epsilon().

37  {
38  return abs(x - y) < epsilon;
39  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER bool glm::epsilonEqual ( float const &  x,
float const &  y,
float const &  epsilon 
)

Definition at line 42 of file epsilon.inl.

References abs(), and epsilon().

47  {
48  return abs(x - y) < epsilon;
49  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER bool glm::epsilonEqual ( double const &  x,
double const &  y,
double const &  epsilon 
)

Definition at line 52 of file epsilon.inl.

References abs(), and epsilon().

57  {
58  return abs(x - y) < epsilon;
59  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec2<bool> glm::epsilonEqual ( detail::tvec2< valType > const &  x,
detail::tvec2< valType > const &  y,
valType const &  epsilon 
)

Definition at line 93 of file epsilon.inl.

References abs(), epsilon(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

97  {
98  return detail::tvec2<bool>(
99  abs(x.x - y.x) < epsilon,
100  abs(x.y - y.y) < epsilon);
101  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec2<bool> glm::epsilonEqual ( detail::tvec2< valType > const &  x,
detail::tvec2< valType > const &  y,
detail::tvec2< valType > const &  epsilon 
)

Definition at line 105 of file epsilon.inl.

References abs(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

110  {
111  return detail::tvec2<bool>(
112  abs(x.x - y.x) < epsilon.x,
113  abs(x.y - y.y) < epsilon.y);
114  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec3<bool> glm::epsilonEqual ( detail::tvec3< valType > const &  x,
detail::tvec3< valType > const &  y,
valType const &  epsilon 
)

Definition at line 118 of file epsilon.inl.

References abs(), epsilon(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

122  {
123  return detail::tvec3<bool>(
124  abs(x.x - y.x) < epsilon,
125  abs(x.y - y.y) < epsilon,
126  abs(x.z - y.z) < epsilon);
127  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec3<bool> glm::epsilonEqual ( detail::tvec3< valType > const &  x,
detail::tvec3< valType > const &  y,
detail::tvec3< valType > const &  epsilon 
)

Definition at line 131 of file epsilon.inl.

References abs(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

136  {
137  return detail::tvec3<bool>(
138  abs(x.x - y.x) < epsilon.x,
139  abs(x.y - y.y) < epsilon.y,
140  abs(x.z - y.z) < epsilon.z);
141  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec4<bool> glm::epsilonEqual ( detail::tvec4< valType > const &  x,
detail::tvec4< valType > const &  y,
valType const &  epsilon 
)

Definition at line 145 of file epsilon.inl.

References abs(), epsilon(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

150  {
151  return detail::tvec4<bool>(
152  abs(x.x - y.x) < epsilon,
153  abs(x.y - y.y) < epsilon,
154  abs(x.z - y.z) < epsilon,
155  abs(x.w - y.w) < epsilon);
156  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec4<bool> glm::epsilonEqual ( detail::tvec4< valType > const &  x,
detail::tvec4< valType > const &  y,
detail::tvec4< valType > const &  epsilon 
)

Definition at line 160 of file epsilon.inl.

References abs(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

165  {
166  return detail::tvec4<bool>(
167  abs(x.x - y.x) < epsilon.x,
168  abs(x.y - y.y) < epsilon.y,
169  abs(x.z - y.z) < epsilon.z,
170  abs(x.w - y.w) < epsilon.w);
171  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec4<bool> glm::epsilonEqual ( detail::tquat< valType > const &  x,
detail::tquat< valType > const &  y,
valType const &  epsilon 
)

Definition at line 259 of file epsilon.inl.

References abs(), epsilon(), glm::detail::tquat< T >::w, glm::detail::tquat< T >::x, glm::detail::tquat< T >::y, and glm::detail::tquat< T >::z.

264  {
265  return detail::tvec4<bool>(
266  abs(x.x - y.x) < epsilon,
267  abs(x.y - y.y) < epsilon,
268  abs(x.z - y.z) < epsilon,
269  abs(x.w - y.w) < epsilon);
270  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER bool glm::epsilonNotEqual ( glm::half const &  x,
glm::half const &  y,
glm::half const &  epsilon 
)

Definition at line 62 of file epsilon.inl.

References abs(), and epsilon().

67  {
68  return abs(x - y) >= epsilon;
69  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER bool glm::epsilonNotEqual ( float const &  x,
float const &  y,
float const &  epsilon 
)

Definition at line 72 of file epsilon.inl.

References abs(), and epsilon().

77  {
78  return abs(x - y) >= epsilon;
79  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER bool glm::epsilonNotEqual ( double const &  x,
double const &  y,
double const &  epsilon 
)

Definition at line 82 of file epsilon.inl.

References abs(), and epsilon().

87  {
88  return abs(x - y) >= epsilon;
89  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec2<bool> glm::epsilonNotEqual ( detail::tvec2< valType > const &  x,
detail::tvec2< valType > const &  y,
valType const &  epsilon 
)

Definition at line 175 of file epsilon.inl.

References abs(), epsilon(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

180  {
181  return detail::tvec2<bool>(
182  abs(x.x - y.x) >= epsilon,
183  abs(x.y - y.y) >= epsilon);
184  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec2<bool> glm::epsilonNotEqual ( detail::tvec2< valType > const &  x,
detail::tvec2< valType > const &  y,
detail::tvec2< valType > const &  epsilon 
)

Definition at line 188 of file epsilon.inl.

References abs(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

193  {
194  return detail::tvec2<bool>(
195  abs(x.x - y.x) >= epsilon.x,
196  abs(x.y - y.y) >= epsilon.y);
197  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec3<bool> glm::epsilonNotEqual ( detail::tvec3< valType > const &  x,
detail::tvec3< valType > const &  y,
valType const &  epsilon 
)

Definition at line 201 of file epsilon.inl.

References abs(), epsilon(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

206  {
207  return detail::tvec3<bool>(
208  abs(x.x - y.x) >= epsilon,
209  abs(x.y - y.y) >= epsilon,
210  abs(x.z - y.z) >= epsilon);
211  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec3<bool> glm::epsilonNotEqual ( detail::tvec3< valType > const &  x,
detail::tvec3< valType > const &  y,
detail::tvec3< valType > const &  epsilon 
)

Definition at line 215 of file epsilon.inl.

References abs(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

220  {
221  return detail::tvec3<bool>(
222  abs(x.x - y.x) >= epsilon.x,
223  abs(x.y - y.y) >= epsilon.y,
224  abs(x.z - y.z) >= epsilon.z);
225  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec4<bool> glm::epsilonNotEqual ( detail::tvec4< valType > const &  x,
detail::tvec4< valType > const &  y,
valType const &  epsilon 
)

Definition at line 229 of file epsilon.inl.

References abs(), epsilon(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

234  {
235  return detail::tvec4<bool>(
236  abs(x.x - y.x) >= epsilon,
237  abs(x.y - y.y) >= epsilon,
238  abs(x.z - y.z) >= epsilon,
239  abs(x.w - y.w) >= epsilon);
240  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec4<bool> glm::epsilonNotEqual ( detail::tvec4< valType > const &  x,
detail::tvec4< valType > const &  y,
detail::tvec4< valType > const &  epsilon 
)

Definition at line 244 of file epsilon.inl.

References abs(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

249  {
250  return detail::tvec4<bool>(
251  abs(x.x - y.x) >= epsilon.x,
252  abs(x.y - y.y) >= epsilon.y,
253  abs(x.z - y.z) >= epsilon.z,
254  abs(x.w - y.w) >= epsilon.w);
255  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec4<bool> glm::epsilonNotEqual ( detail::tquat< valType > const &  x,
detail::tquat< valType > const &  y,
valType const &  epsilon 
)

Definition at line 274 of file epsilon.inl.

References abs(), epsilon(), glm::detail::tquat< T >::w, glm::detail::tquat< T >::x, glm::detail::tquat< T >::y, and glm::detail::tquat< T >::z.

279  {
280  return detail::tvec4<bool>(
281  abs(x.x - y.x) >= epsilon,
282  abs(x.y - y.y) >= epsilon,
283  abs(x.z - y.z) >= epsilon,
284  abs(x.w - y.w) >= epsilon);
285  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType<T>::bool_type glm::equal ( vecType< T > const &  x,
vecType< T > const &  y 
)

Definition at line 110 of file func_vector_relational.inl.

References GLM_STATIC_ASSERT.

114  {
115  GLM_STATIC_ASSERT(detail::is_vector<vecType<T> >::_YES,
116  "Invalid template instantiation of 'equal', GLM vector types required");
117  assert(x.length() == y.length());
118 
119  typename vecType<bool>::bool_type Result(vecType<bool>::null);
120  for(typename vecType<bool>::size_type i = 0; i < x.length(); ++i)
121  Result[i] = x[i] == y[i];
122  return Result;
123  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tquat<T> glm::exp ( detail::tquat< T > const &  q)

Definition at line 60 of file quaternion.inl.

References cos(), length(), sin(), glm::detail::tquat< T >::x, glm::detail::tquat< T >::y, and glm::detail::tquat< T >::z.

63  {
64  detail::tvec3<T> u(q.x, q.y, q.z);
65  float Angle = glm::length(u);
66  detail::tvec3<T> v(u / Angle);
67  return detail::tquat<T>(cos(Angle), sin(Angle) * v);
68  }
GLM_FUNC_DECL genType cos(genType const &angle)
GLM_FUNC_DECL genType sin(genType const &angle)
const GLdouble * v
Definition: glew.h:1377
GLdouble GLdouble GLdouble GLdouble q
Definition: glew.h:1400
GLM_FUNC_DECL genType::value_type length(genType const &x)
template<typename genType >
genType glm::extend ( genType const &  Origin,
genType const &  Source,
genType const &  Distance 
)

Definition at line 14 of file extend.inl.

19  {
20  return Origin + (Source - Origin) * Distance;
21  }
template<typename valType >
detail::tvec2<valType> glm::extend ( detail::tvec2< valType > const &  Origin,
detail::tvec2< valType > const &  Source,
valType const &  Distance 
)

Definition at line 25 of file extend.inl.

30  {
31  return Origin + (Source - Origin) * Distance;
32  }
template<typename valType >
detail::tvec3<valType> glm::extend ( detail::tvec3< valType > const &  Origin,
detail::tvec3< valType > const &  Source,
valType const &  Distance 
)

Definition at line 36 of file extend.inl.

41  {
42  return Origin + (Source - Origin) * Distance;
43  }
template<typename valType >
detail::tvec4<valType> glm::extend ( detail::tvec4< valType > const &  Origin,
detail::tvec4< valType > const &  Source,
valType const &  Distance 
)

Definition at line 47 of file extend.inl.

52  {
53  return Origin + (Source - Origin) * Distance;
54  }
template<typename genIType >
GLM_FUNC_QUALIFIER genIType glm::extractField ( half const &  value,
genIType const &  first,
genIType const &  count 
)

Definition at line 26 of file bit.inl.

References glm::detail::half::_data().

31  {
32  assert(first + count < sizeof(half));
33  return (value._data() << first) >> ((sizeof(half) << 3) - count);
34  }
detail::half half
Definition: half_float.hpp:357
const GLint * first
Definition: glew.h:1514
GLuint GLuint GLsizei count
Definition: glew.h:1239
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename genIType >
GLM_FUNC_QUALIFIER genIType glm::extractField ( float const &  value,
genIType const &  first,
genIType const &  count 
)

Definition at line 38 of file bit.inl.

43  {
44  assert(first + count < sizeof(float));
45  return (detail::uif32(value).i << first) >> ((sizeof(float) << 3) - count);
46  }
const GLint * first
Definition: glew.h:1514
GLuint GLuint GLsizei count
Definition: glew.h:1239
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename genIType >
GLM_FUNC_QUALIFIER genIType glm::extractField ( double const &  value,
genIType const &  first,
genIType const &  count 
)

Definition at line 50 of file bit.inl.

55  {
56  assert(first + count < sizeof(double));
57  return (detail::uif64(value).i << first) >> ((sizeof(double) << genIType(3)) - count);
58  }
const GLint * first
Definition: glew.h:1514
GLuint GLuint GLsizei count
Definition: glew.h:1239
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename genIUType , typename sizeType >
GLM_FUNC_QUALIFIER detail::tvec2<genIUType> glm::extractField ( detail::tvec2< genIUType > const &  value,
sizeType const &  first,
sizeType const &  count 
)

Definition at line 80 of file bit.inl.

References extractField().

85  {
86  return detail::tvec2<genIUType>(
89  }
const GLint * first
Definition: glew.h:1514
GLM_FUNC_QUALIFIER detail::tvec4< genIUType > extractField(genIUType const &value, detail::tvec4< sizeType > const &first, detail::tvec4< sizeType > const &count)
Definition: bit.inl:191
GLuint GLuint GLsizei count
Definition: glew.h:1239
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename genIUType , typename sizeType >
GLM_FUNC_QUALIFIER detail::tvec3<genIUType> glm::extractField ( detail::tvec3< genIUType > const &  value,
sizeType const &  first,
sizeType const &  count 
)

Definition at line 93 of file bit.inl.

References extractField().

98  {
99  return detail::tvec3<genIUType>(
102  extractField(value[2], first, count));
103  }
const GLint * first
Definition: glew.h:1514
GLM_FUNC_QUALIFIER detail::tvec4< genIUType > extractField(genIUType const &value, detail::tvec4< sizeType > const &first, detail::tvec4< sizeType > const &count)
Definition: bit.inl:191
GLuint GLuint GLsizei count
Definition: glew.h:1239
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename genIUType , typename sizeType >
GLM_FUNC_QUALIFIER detail::tvec4<genIUType> glm::extractField ( detail::tvec4< genIUType > const &  value,
sizeType const &  first,
sizeType const &  count 
)

Definition at line 107 of file bit.inl.

References extractField().

112  {
113  return detail::tvec4<genIUType>(
117  extractField(value[3], first, count));
118  }
const GLint * first
Definition: glew.h:1514
GLM_FUNC_QUALIFIER detail::tvec4< genIUType > extractField(genIUType const &value, detail::tvec4< sizeType > const &first, detail::tvec4< sizeType > const &count)
Definition: bit.inl:191
GLuint GLuint GLsizei count
Definition: glew.h:1239
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename genIUType , typename sizeType >
GLM_FUNC_QUALIFIER detail::tvec2<genIUType> glm::extractField ( detail::tvec2< genIUType > const &  value,
detail::tvec2< sizeType > const &  first,
detail::tvec2< sizeType > const &  count 
)

Definition at line 122 of file bit.inl.

References extractField().

127  {
128  return detail::tvec2<genIUType>(
129  extractField(value[0], first[0], count[0]),
130  extractField(value[1], first[1], count[1]));
131  }
const GLint * first
Definition: glew.h:1514
GLM_FUNC_QUALIFIER detail::tvec4< genIUType > extractField(genIUType const &value, detail::tvec4< sizeType > const &first, detail::tvec4< sizeType > const &count)
Definition: bit.inl:191
GLuint GLuint GLsizei count
Definition: glew.h:1239
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename genIUType , typename sizeType >
GLM_FUNC_QUALIFIER detail::tvec3<genIUType> glm::extractField ( detail::tvec3< genIUType > const &  value,
detail::tvec3< sizeType > const &  first,
detail::tvec3< sizeType > const &  count 
)

Definition at line 135 of file bit.inl.

References extractField().

140  {
141  return detail::tvec3<genIUType>(
142  extractField(value[0], first[0], count[0]),
143  extractField(value[1], first[1], count[1]),
144  extractField(value[2], first[2], count[2]));
145  }
const GLint * first
Definition: glew.h:1514
GLM_FUNC_QUALIFIER detail::tvec4< genIUType > extractField(genIUType const &value, detail::tvec4< sizeType > const &first, detail::tvec4< sizeType > const &count)
Definition: bit.inl:191
GLuint GLuint GLsizei count
Definition: glew.h:1239
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename genIUType , typename sizeType >
GLM_FUNC_QUALIFIER detail::tvec4<genIUType> glm::extractField ( detail::tvec4< genIUType > const &  value,
detail::tvec4< sizeType > const &  first,
detail::tvec4< sizeType > const &  count 
)

Definition at line 149 of file bit.inl.

References extractField().

154  {
155  return detail::tvec4<genIUType>(
156  extractField(value[0], first[0], count[0]),
157  extractField(value[1], first[1], count[1]),
158  extractField(value[2], first[2], count[2]),
159  extractField(value[3], first[3], count[3]));
160  }
const GLint * first
Definition: glew.h:1514
GLM_FUNC_QUALIFIER detail::tvec4< genIUType > extractField(genIUType const &value, detail::tvec4< sizeType > const &first, detail::tvec4< sizeType > const &count)
Definition: bit.inl:191
GLuint GLuint GLsizei count
Definition: glew.h:1239
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename genIUType , typename sizeType >
GLM_FUNC_QUALIFIER detail::tvec2<genIUType> glm::extractField ( genIUType const &  value,
detail::tvec2< sizeType > const &  first,
detail::tvec2< sizeType > const &  count 
)

Definition at line 164 of file bit.inl.

References extractField().

169  {
170  return detail::tvec2<genIUType>(
171  extractField(value, first[0], count[0]),
172  extractField(value, first[1], count[1]));
173  }
const GLint * first
Definition: glew.h:1514
GLM_FUNC_QUALIFIER detail::tvec4< genIUType > extractField(genIUType const &value, detail::tvec4< sizeType > const &first, detail::tvec4< sizeType > const &count)
Definition: bit.inl:191
GLuint GLuint GLsizei count
Definition: glew.h:1239
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename genIUType , typename sizeType >
GLM_FUNC_QUALIFIER detail::tvec3<genIUType> glm::extractField ( genIUType const &  value,
detail::tvec3< sizeType > const &  first,
detail::tvec3< sizeType > const &  count 
)

Definition at line 177 of file bit.inl.

References extractField().

182  {
183  return detail::tvec3<genIUType>(
184  extractField(value, first[0], count[0]),
185  extractField(value, first[1], count[1]),
186  extractField(value, first[2], count[2]));
187  }
const GLint * first
Definition: glew.h:1514
GLM_FUNC_QUALIFIER detail::tvec4< genIUType > extractField(genIUType const &value, detail::tvec4< sizeType > const &first, detail::tvec4< sizeType > const &count)
Definition: bit.inl:191
GLuint GLuint GLsizei count
Definition: glew.h:1239
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename genIUType , typename sizeType >
GLM_FUNC_QUALIFIER detail::tvec4<genIUType> glm::extractField ( genIUType const &  value,
detail::tvec4< sizeType > const &  first,
detail::tvec4< sizeType > const &  count 
)

Definition at line 191 of file bit.inl.

References extractField().

196  {
197  return detail::tvec4<genIUType>(
198  extractField(value, first[0], count[0]),
199  extractField(value, first[1], count[1]),
200  extractField(value, first[2], count[2]),
201  extractField(value, first[3], count[3]));
202  }
const GLint * first
Definition: glew.h:1514
GLM_FUNC_QUALIFIER detail::tvec4< genIUType > extractField(genIUType const &value, detail::tvec4< sizeType > const &first, detail::tvec4< sizeType > const &count)
Definition: bit.inl:191
GLuint GLuint GLsizei count
Definition: glew.h:1239
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename T >
GLM_FUNC_QUALIFIER T glm::extractRealComponent ( detail::tquat< T > const &  q)

Definition at line 145 of file quaternion.inl.

References sqrt(), T, glm::detail::tquat< T >::x, glm::detail::tquat< T >::y, and glm::detail::tquat< T >::z.

148  {
149  T w = T(1.0) - q.x * q.x - q.y * q.y - q.z * q.z;
150  if(w < T(0))
151  return T(0);
152  else
153  return -sqrt(w);
154  }
GLM_FUNC_DECL genType sqrt(genType const &x)
GLdouble GLdouble GLdouble GLdouble q
Definition: glew.h:1400
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<>
GLM_FUNC_QUALIFIER f16vec4 glm::f16_abgr_cast< uint32 > ( uint32  color)

Definition at line 274 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

275  {
276  f16vec4 result;
277  result.x = f16(static_cast<float>((color >> 24) & 0xFF) / static_cast<float>(255));
278  result.y = f16(static_cast<float>((color >> 16) & 0xFF) / static_cast<float>(255));
279  result.z = f16(static_cast<float>((color >> 8) & 0xFF) / static_cast<float>(255));
280  result.w = f16(static_cast<float>((color >> 0) & 0xFF) / static_cast<float>(255));
281  return result;
282  }
float16 f16
GLuint color
Definition: glew.h:7185
detail::tvec4< f16 > f16vec4
GLuint64EXT * result
Definition: glew.h:12708

Definition at line 544 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

545  {
546  detail::tvec4<detail::half> result;
547  result.x = detail::half(static_cast<float>((color >> 48) & 0xFFFF) / static_cast<float>(65535));
548  result.y = detail::half(static_cast<float>((color >> 32) & 0xFFFF) / static_cast<float>(65535));
549  result.z = detail::half(static_cast<float>((color >> 16) & 0xFFFF) / static_cast<float>(65535));
550  result.w = detail::half(static_cast<float>((color >> 0) & 0xFFFF) / static_cast<float>(65535));
551  return result;
552  }
detail::half half
Definition: half_float.hpp:357
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER f16vec4 glm::f16_argb_cast< uint32 > ( uint32  color)

Definition at line 252 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

253  {
254  f16vec4 result;
255  result.x = f16(static_cast<float>((color >> 8) & 0xFF) / static_cast<float>(255));
256  result.y = f16(static_cast<float>((color >> 16) & 0xFF) / static_cast<float>(255));
257  result.z = f16(static_cast<float>((color >> 24) & 0xFF) / static_cast<float>(255));
258  result.w = f16(static_cast<float>((color >> 0) & 0xFF) / static_cast<float>(255));
259  return result;
260  }
float16 f16
GLuint color
Definition: glew.h:7185
detail::tvec4< f16 > f16vec4
GLuint64EXT * result
Definition: glew.h:12708

Definition at line 522 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

523  {
524  detail::tvec4<detail::half> result;
525  result.x = detail::half(static_cast<float>((color >> 16) & 0xFFFF) / static_cast<float>(65535));
526  result.y = detail::half(static_cast<float>((color >> 32) & 0xFFFF) / static_cast<float>(65535));
527  result.z = detail::half(static_cast<float>((color >> 48) & 0xFFFF) / static_cast<float>(65535));
528  result.w = detail::half(static_cast<float>((color >> 0) & 0xFFFF) / static_cast<float>(65535));
529  return result;
530  }
detail::half half
Definition: half_float.hpp:357
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER f16vec4 glm::f16_bgra_cast< uint32 > ( uint32  color)

Definition at line 263 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

264  {
265  f16vec4 result;
266  result.x = f16(static_cast<float>((color >> 16) & 0xFF) / static_cast<float>(255));
267  result.y = f16(static_cast<float>((color >> 8) & 0xFF) / static_cast<float>(255));
268  result.z = f16(static_cast<float>((color >> 0) & 0xFF) / static_cast<float>(255));
269  result.w = f16(static_cast<float>((color >> 24) & 0xFF) / static_cast<float>(255));
270  return result;
271  }
float16 f16
GLuint color
Definition: glew.h:7185
detail::tvec4< f16 > f16vec4
GLuint64EXT * result
Definition: glew.h:12708

Definition at line 533 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

534  {
535  detail::tvec4<detail::half> result;
536  result.x = detail::half(static_cast<float>((color >> 32) & 0xFFFF) / static_cast<float>(65535));
537  result.y = detail::half(static_cast<float>((color >> 16) & 0xFFFF) / static_cast<float>(65535));
538  result.z = detail::half(static_cast<float>((color >> 0) & 0xFFFF) / static_cast<float>(65535));
539  result.w = detail::half(static_cast<float>((color >> 48) & 0xFFFF) / static_cast<float>(65535));
540  return result;
541  }
detail::half half
Definition: half_float.hpp:357
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER f16vec3 glm::f16_bgrx_cast< uint32 > ( uint32  color)

Definition at line 221 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

222  {
223  f16vec3 result;
224  result.x = f16(static_cast<float>((color >> 16) & 0xFF) / static_cast<float>(255));
225  result.y = f16(static_cast<float>((color >> 8) & 0xFF) / static_cast<float>(255));
226  result.z = f16(static_cast<float>((color >> 0) & 0xFF) / static_cast<float>(255));
227  return result;
228  }
float16 f16
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
detail::tvec3< f16 > f16vec3

Definition at line 491 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

492  {
493  detail::tvec3<detail::half> result;
494  result.x = detail::half(static_cast<float>((color >> 32) & 0xFFFF) / static_cast<float>(65535));
495  result.y = detail::half(static_cast<float>((color >> 16) & 0xFFFF) / static_cast<float>(65535));
496  result.z = detail::half(static_cast<float>((color >> 0) & 0xFFFF) / static_cast<float>(65535));
497  return result;
498  }
detail::half half
Definition: half_float.hpp:357
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708

Definition at line 465 of file color_cast.inl.

466  {
467  return detail::half(static_cast<float>(color >> 0) / static_cast<float>(65535));
468  }
detail::half half
Definition: half_float.hpp:357
GLuint color
Definition: glew.h:7185
template<>
GLM_FUNC_QUALIFIER f16 glm::f16_channel_cast< uint32 > ( uint32  color)

Definition at line 195 of file color_cast.inl.

196  {
197  return f16(static_cast<float>(color >> 0) / static_cast<float>(255));
198  }
float16 f16
GLuint color
Definition: glew.h:7185
template<>
GLM_FUNC_QUALIFIER f16vec4 glm::f16_rgba_cast< uint32 > ( uint32  color)

Definition at line 241 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

242  {
243  f16vec4 result;
244  result.x = f16(static_cast<float>((color >> 0) & 0xFF) / static_cast<float>(255));
245  result.y = f16(static_cast<float>((color >> 8) & 0xFF) / static_cast<float>(255));
246  result.z = f16(static_cast<float>((color >> 16) & 0xFF) / static_cast<float>(255));
247  result.w = f16(static_cast<float>((color >> 24) & 0xFF) / static_cast<float>(255));
248  return result;
249  }
float16 f16
GLuint color
Definition: glew.h:7185
detail::tvec4< f16 > f16vec4
GLuint64EXT * result
Definition: glew.h:12708

Definition at line 511 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

512  {
513  detail::tvec4<detail::half> result;
514  result.x = detail::half(static_cast<float>((color >> 0) & 0xFFFF) / static_cast<float>(65535));
515  result.y = detail::half(static_cast<float>((color >> 16) & 0xFFFF) / static_cast<float>(65535));
516  result.z = detail::half(static_cast<float>((color >> 32) & 0xFFFF) / static_cast<float>(65535));
517  result.w = detail::half(static_cast<float>((color >> 48) & 0xFFFF) / static_cast<float>(65535));
518  return result;
519  }
detail::half half
Definition: half_float.hpp:357
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER f16vec3 glm::f16_rgbx_cast< uint32 > ( uint32  color)

Definition at line 201 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

202  {
203  f16vec3 result;
204  result.x = f16(static_cast<float>((color >> 0) & 0xFF) / static_cast<float>(255));
205  result.y = f16(static_cast<float>((color >> 8) & 0xFF) / static_cast<float>(255));
206  result.z = f16(static_cast<float>((color >> 16) & 0xFF) / static_cast<float>(255));
207  return result;
208  }
float16 f16
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
detail::tvec3< f16 > f16vec3

Definition at line 471 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

472  {
473  detail::tvec3<detail::half> result;
474  result.x = detail::half(static_cast<float>((color >> 0) & 0xFFFF) / static_cast<float>(65535));
475  result.y = detail::half(static_cast<float>((color >> 16) & 0xFFFF) / static_cast<float>(65535));
476  result.z = detail::half(static_cast<float>((color >> 32) & 0xFFFF) / static_cast<float>(65535));
477  return result;
478  }
detail::half half
Definition: half_float.hpp:357
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER f16vec3 glm::f16_xbgr_cast< uint32 > ( uint32  color)

Definition at line 231 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

232  {
233  f16vec3 result;
234  result.x = f16(static_cast<float>((color >> 24) & 0xFF) / static_cast<float>(255));
235  result.y = f16(static_cast<float>((color >> 16) & 0xFF) / static_cast<float>(255));
236  result.z = f16(static_cast<float>((color >> 8) & 0xFF) / static_cast<float>(255));
237  return result;
238  }
float16 f16
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
detail::tvec3< f16 > f16vec3

Definition at line 501 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

502  {
503  detail::tvec3<detail::half> result;
504  result.x = detail::half(static_cast<float>((color >> 48) & 0xFFFF) / static_cast<float>(65535));
505  result.y = detail::half(static_cast<float>((color >> 32) & 0xFFFF) / static_cast<float>(65535));
506  result.z = detail::half(static_cast<float>((color >> 16) & 0xFFFF) / static_cast<float>(65535));
507  return result;
508  }
detail::half half
Definition: half_float.hpp:357
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER f16vec3 glm::f16_xrgb_cast< uint32 > ( uint32  color)

Definition at line 211 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

212  {
213  f16vec3 result;
214  result.x = f16(static_cast<float>((color >> 8) & 0xFF) / static_cast<float>(255));
215  result.y = f16(static_cast<float>((color >> 16) & 0xFF) / static_cast<float>(255));
216  result.z = f16(static_cast<float>((color >> 24) & 0xFF) / static_cast<float>(255));
217  return result;
218  }
float16 f16
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
detail::tvec3< f16 > f16vec3

Definition at line 481 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

482  {
483  detail::tvec3<detail::half> result;
484  result.x = detail::half(static_cast<float>((color >> 16) & 0xFFFF) / static_cast<float>(65535));
485  result.y = detail::half(static_cast<float>((color >> 32) & 0xFFFF) / static_cast<float>(65535));
486  result.z = detail::half(static_cast<float>((color >> 48) & 0xFFFF) / static_cast<float>(65535));
487  return result;
488  }
detail::half half
Definition: half_float.hpp:357
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec4<float> glm::f32_abgr_cast< uint32 > ( uint32  color)

Definition at line 364 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

365  {
366  detail::tvec4<float> result;
367  result.x = static_cast<float>((color >> 24) & 0xFF) / static_cast<float>(255);
368  result.y = static_cast<float>((color >> 16) & 0xFF) / static_cast<float>(255);
369  result.z = static_cast<float>((color >> 8) & 0xFF) / static_cast<float>(255);
370  result.w = static_cast<float>((color >> 0) & 0xFF) / static_cast<float>(255);
371  return result;
372  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec4<float> glm::f32_abgr_cast< uint64 > ( uint64  color)

Definition at line 634 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

635  {
636  detail::tvec4<float> result;
637  result.x = static_cast<float>((color >> 48) & 0xFFFF) / static_cast<float>(65535);
638  result.y = static_cast<float>((color >> 32) & 0xFFFF) / static_cast<float>(65535);
639  result.z = static_cast<float>((color >> 16) & 0xFFFF) / static_cast<float>(65535);
640  result.w = static_cast<float>((color >> 0) & 0xFFFF) / static_cast<float>(65535);
641  return result;
642  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec4<float> glm::f32_argb_cast< uint32 > ( uint32  color)

Definition at line 342 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

343  {
344  detail::tvec4<float> result;
345  result.x = static_cast<float>((color >> 8) & 0xFF) / static_cast<float>(255);
346  result.y = static_cast<float>((color >> 16) & 0xFF) / static_cast<float>(255);
347  result.z = static_cast<float>((color >> 24) & 0xFF) / static_cast<float>(255);
348  result.w = static_cast<float>((color >> 0) & 0xFF) / static_cast<float>(255);
349  return result;
350  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec4<float> glm::f32_argb_cast< uint64 > ( uint64  color)

Definition at line 612 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

613  {
614  detail::tvec4<float> result;
615  result.x = static_cast<float>((color >> 16) & 0xFFFF) / static_cast<float>(65535);
616  result.y = static_cast<float>((color >> 32) & 0xFFFF) / static_cast<float>(65535);
617  result.z = static_cast<float>((color >> 48) & 0xFFFF) / static_cast<float>(65535);
618  result.w = static_cast<float>((color >> 0) & 0xFFFF) / static_cast<float>(65535);
619  return result;
620  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec4<float> glm::f32_bgra_cast< uint32 > ( uint32  color)

Definition at line 353 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

354  {
355  detail::tvec4<float> result;
356  result.x = static_cast<float>((color >> 16) & 0xFF) / static_cast<float>(255);
357  result.y = static_cast<float>((color >> 8) & 0xFF) / static_cast<float>(255);
358  result.z = static_cast<float>((color >> 0) & 0xFF) / static_cast<float>(255);
359  result.w = static_cast<float>((color >> 24) & 0xFF) / static_cast<float>(255);
360  return result;
361  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec4<float> glm::f32_bgra_cast< uint64 > ( uint64  color)

Definition at line 623 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

624  {
625  detail::tvec4<float> result;
626  result.x = static_cast<float>((color >> 32) & 0xFFFF) / static_cast<float>(65535);
627  result.y = static_cast<float>((color >> 16) & 0xFFFF) / static_cast<float>(65535);
628  result.z = static_cast<float>((color >> 0) & 0xFFFF) / static_cast<float>(65535);
629  result.w = static_cast<float>((color >> 48) & 0xFFFF) / static_cast<float>(65535);
630  return result;
631  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec3<float> glm::f32_bgrx_cast< uint32 > ( uint32  color)

Definition at line 311 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

312  {
313  detail::tvec3<float> result;
314  result.x = static_cast<float>((color >> 16) & 0xFF) / static_cast<float>(255);
315  result.y = static_cast<float>((color >> 8) & 0xFF) / static_cast<float>(255);
316  result.z = static_cast<float>((color >> 0) & 0xFF) / static_cast<float>(255);
317  return result;
318  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec3<float> glm::f32_bgrx_cast< uint64 > ( uint64  color)

Definition at line 581 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

582  {
583  detail::tvec3<float> result;
584  result.x = static_cast<float>((color >> 32) & 0xFFFF) / static_cast<float>(65535);
585  result.y = static_cast<float>((color >> 16) & 0xFFFF) / static_cast<float>(65535);
586  result.z = static_cast<float>((color >> 0) & 0xFFFF) / static_cast<float>(65535);
587  return result;
588  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER float glm::f32_channel_cast< uint16 > ( uint16  color)

Definition at line 555 of file color_cast.inl.

556  {
557  return static_cast<float>(color >> 0) / static_cast<float>(65535);
558  }
GLuint color
Definition: glew.h:7185
template<>
GLM_FUNC_QUALIFIER float glm::f32_channel_cast< uint8 > ( uint8  color)

Definition at line 285 of file color_cast.inl.

286  {
287  return static_cast<float>(color >> 0) / static_cast<float>(255);
288  }
GLuint color
Definition: glew.h:7185
template<>
GLM_FUNC_QUALIFIER detail::tvec4<float> glm::f32_rgba_cast< uint32 > ( uint32  color)

Definition at line 331 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

332  {
333  detail::tvec4<float> result;
334  result.x = static_cast<float>((color >> 0) & 0xFF) / static_cast<float>(255);
335  result.y = static_cast<float>((color >> 8) & 0xFF) / static_cast<float>(255);
336  result.z = static_cast<float>((color >> 16) & 0xFF) / static_cast<float>(255);
337  result.w = static_cast<float>((color >> 24) & 0xFF) / static_cast<float>(255);
338  return result;
339  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec4<float> glm::f32_rgba_cast< uint64 > ( uint64  color)

Definition at line 601 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

602  {
603  detail::tvec4<float> result;
604  result.x = static_cast<float>((color >> 0) & 0xFFFF) / static_cast<float>(65535);
605  result.y = static_cast<float>((color >> 16) & 0xFFFF) / static_cast<float>(65535);
606  result.z = static_cast<float>((color >> 32) & 0xFFFF) / static_cast<float>(65535);
607  result.w = static_cast<float>((color >> 48) & 0xFFFF) / static_cast<float>(65535);
608  return result;
609  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec3<float> glm::f32_rgbx_cast< uint32 > ( uint32  color)

Definition at line 291 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

292  {
293  detail::tvec3<float> result;
294  result.x = static_cast<float>((color >> 0) & 0xFF) / static_cast<float>(255);
295  result.y = static_cast<float>((color >> 8) & 0xFF) / static_cast<float>(255);
296  result.z = static_cast<float>((color >> 16) & 0xFF) / static_cast<float>(255);
297  return result;
298  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec3<float> glm::f32_rgbx_cast< uint64 > ( uint64  color)

Definition at line 561 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

562  {
563  detail::tvec3<float> result;
564  result.x = static_cast<float>((color >> 0) & 0xFFFF) / static_cast<float>(65535);
565  result.y = static_cast<float>((color >> 16) & 0xFFFF) / static_cast<float>(65535);
566  result.z = static_cast<float>((color >> 32) & 0xFFFF) / static_cast<float>(65535);
567  return result;
568  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec3<float> glm::f32_xbgr_cast< uint32 > ( uint32  color)

Definition at line 321 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

322  {
323  detail::tvec3<float> result;
324  result.x = static_cast<float>((color >> 24) & 0xFF) / static_cast<float>(255);
325  result.y = static_cast<float>((color >> 16) & 0xFF) / static_cast<float>(255);
326  result.z = static_cast<float>((color >> 8) & 0xFF) / static_cast<float>(255);
327  return result;
328  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec3<float> glm::f32_xbgr_cast< uint64 > ( uint64  color)

Definition at line 591 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

592  {
593  detail::tvec3<float> result;
594  result.x = static_cast<float>((color >> 48) & 0xFFFF) / static_cast<float>(65535);
595  result.y = static_cast<float>((color >> 32) & 0xFFFF) / static_cast<float>(65535);
596  result.z = static_cast<float>((color >> 16) & 0xFFFF) / static_cast<float>(65535);
597  return result;
598  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec3<float> glm::f32_xrgb_cast< uint32 > ( uint32  color)

Definition at line 301 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

302  {
303  detail::tvec3<float> result;
304  result.x = static_cast<float>((color >> 8) & 0xFF) / static_cast<float>(255);
305  result.y = static_cast<float>((color >> 16) & 0xFF) / static_cast<float>(255);
306  result.z = static_cast<float>((color >> 24) & 0xFF) / static_cast<float>(255);
307  return result;
308  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec3<float> glm::f32_xrgb_cast< uint64 > ( uint64  color)

Definition at line 571 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

572  {
573  detail::tvec3<float> result;
574  result.x = static_cast<float>((color >> 16) & 0xFFFF) / static_cast<float>(65535);
575  result.y = static_cast<float>((color >> 32) & 0xFFFF) / static_cast<float>(65535);
576  result.z = static_cast<float>((color >> 48) & 0xFFFF) / static_cast<float>(65535);
577  return result;
578  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec4<double> glm::f64_abgr_cast< uint32 > ( uint32  color)

Definition at line 454 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

455  {
456  detail::tvec4<double> result;
457  result.x = static_cast<double>((color >> 24) & 0xFF) / static_cast<double>(255);
458  result.y = static_cast<double>((color >> 16) & 0xFF) / static_cast<double>(255);
459  result.z = static_cast<double>((color >> 8) & 0xFF) / static_cast<double>(255);
460  result.w = static_cast<double>((color >> 0) & 0xFF) / static_cast<double>(255);
461  return result;
462  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec4<double> glm::f64_abgr_cast< uint64 > ( uint64  color)

Definition at line 724 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

725  {
726  detail::tvec4<double> result;
727  result.x = static_cast<double>((color >> 48) & 0xFFFF) / static_cast<double>(65535);
728  result.y = static_cast<double>((color >> 32) & 0xFFFF) / static_cast<double>(65535);
729  result.z = static_cast<double>((color >> 16) & 0xFFFF) / static_cast<double>(65535);
730  result.w = static_cast<double>((color >> 0) & 0xFFFF) / static_cast<double>(65535);
731  return result;
732  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec4<double> glm::f64_argb_cast< uint32 > ( uint32  color)

Definition at line 432 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

433  {
434  detail::tvec4<double> result;
435  result.x = static_cast<double>((color >> 8) & 0xFF) / static_cast<double>(255);
436  result.y = static_cast<double>((color >> 16) & 0xFF) / static_cast<double>(255);
437  result.z = static_cast<double>((color >> 24) & 0xFF) / static_cast<double>(255);
438  result.w = static_cast<double>((color >> 0) & 0xFF) / static_cast<double>(255);
439  return result;
440  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec4<double> glm::f64_argb_cast< uint64 > ( uint64  color)

Definition at line 702 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

703  {
704  detail::tvec4<double> result;
705  result.x = static_cast<double>((color >> 16) & 0xFFFF) / static_cast<double>(65535);
706  result.y = static_cast<double>((color >> 32) & 0xFFFF) / static_cast<double>(65535);
707  result.z = static_cast<double>((color >> 48) & 0xFFFF) / static_cast<double>(65535);
708  result.w = static_cast<double>((color >> 0) & 0xFFFF) / static_cast<double>(65535);
709  return result;
710  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec4<double> glm::f64_bgra_cast< uint32 > ( uint32  color)

Definition at line 443 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

444  {
445  detail::tvec4<double> result;
446  result.x = static_cast<double>((color >> 16) & 0xFF) / static_cast<double>(255);
447  result.y = static_cast<double>((color >> 8) & 0xFF) / static_cast<double>(255);
448  result.z = static_cast<double>((color >> 0) & 0xFF) / static_cast<double>(255);
449  result.w = static_cast<double>((color >> 24) & 0xFF) / static_cast<double>(255);
450  return result;
451  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec4<double> glm::f64_bgra_cast< uint64 > ( uint64  color)

Definition at line 713 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

714  {
715  detail::tvec4<double> result;
716  result.x = static_cast<double>((color >> 32) & 0xFFFF) / static_cast<double>(65535);
717  result.y = static_cast<double>((color >> 16) & 0xFFFF) / static_cast<double>(65535);
718  result.z = static_cast<double>((color >> 0) & 0xFFFF) / static_cast<double>(65535);
719  result.w = static_cast<double>((color >> 48) & 0xFFFF) / static_cast<double>(65535);
720  return result;
721  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec3<double> glm::f64_bgrx_cast< uint32 > ( uint32  color)

Definition at line 401 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

402  {
403  detail::tvec3<double> result;
404  result.x = static_cast<double>((color >> 16) & 0xFF) / static_cast<double>(255);
405  result.y = static_cast<double>((color >> 8) & 0xFF) / static_cast<double>(255);
406  result.z = static_cast<double>((color >> 0) & 0xFF) / static_cast<double>(255);
407  return result;
408  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec3<double> glm::f64_bgrx_cast< uint64 > ( uint64  color)

Definition at line 671 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

672  {
673  detail::tvec3<double> result;
674  result.x = static_cast<double>((color >> 32) & 0xFFFF) / static_cast<double>(65535);
675  result.y = static_cast<double>((color >> 16) & 0xFFFF) / static_cast<double>(65535);
676  result.z = static_cast<double>((color >> 0) & 0xFFFF) / static_cast<double>(65535);
677  return result;
678  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER double glm::f64_channel_cast< uint16 > ( uint16  color)

Definition at line 645 of file color_cast.inl.

646  {
647  return static_cast<double>(color >> 0) / static_cast<double>(65535);
648  }
GLuint color
Definition: glew.h:7185
template<>
GLM_FUNC_QUALIFIER double glm::f64_channel_cast< uint8 > ( uint8  color)

Definition at line 375 of file color_cast.inl.

376  {
377  return static_cast<double>(color >> 0) / static_cast<double>(255);
378  }
GLuint color
Definition: glew.h:7185
template<>
GLM_FUNC_QUALIFIER detail::tvec4<double> glm::f64_rgba_cast< uint32 > ( uint32  color)

Definition at line 421 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

422  {
423  detail::tvec4<double> result;
424  result.x = static_cast<double>((color >> 0) & 0xFF) / static_cast<double>(255);
425  result.y = static_cast<double>((color >> 8) & 0xFF) / static_cast<double>(255);
426  result.z = static_cast<double>((color >> 16) & 0xFF) / static_cast<double>(255);
427  result.w = static_cast<double>((color >> 24) & 0xFF) / static_cast<double>(255);
428  return result;
429  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec4<double> glm::f64_rgba_cast< uint64 > ( uint64  color)

Definition at line 691 of file color_cast.inl.

References glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

692  {
693  detail::tvec4<double> result;
694  result.x = static_cast<double>((color >> 0) & 0xFFFF) / static_cast<double>(65535);
695  result.y = static_cast<double>((color >> 16) & 0xFFFF) / static_cast<double>(65535);
696  result.z = static_cast<double>((color >> 32) & 0xFFFF) / static_cast<double>(65535);
697  result.w = static_cast<double>((color >> 48) & 0xFFFF) / static_cast<double>(65535);
698  return result;
699  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec3<double> glm::f64_rgbx_cast< uint32 > ( uint32  color)

Definition at line 381 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

382  {
383  detail::tvec3<double> result;
384  result.x = static_cast<double>((color >> 0) & 0xFF) / static_cast<double>(255);
385  result.y = static_cast<double>((color >> 8) & 0xFF) / static_cast<double>(255);
386  result.z = static_cast<double>((color >> 16) & 0xFF) / static_cast<double>(255);
387  return result;
388  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec3<double> glm::f64_rgbx_cast< uint64 > ( uint64  color)

Definition at line 651 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

652  {
653  detail::tvec3<double> result;
654  result.x = static_cast<double>((color >> 0) & 0xFFFF) / static_cast<double>(65535);
655  result.y = static_cast<double>((color >> 16) & 0xFFFF) / static_cast<double>(65535);
656  result.z = static_cast<double>((color >> 32) & 0xFFFF) / static_cast<double>(65535);
657  return result;
658  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec3<double> glm::f64_xbgr_cast< uint32 > ( uint32  color)

Definition at line 411 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

412  {
413  detail::tvec3<double> result;
414  result.x = static_cast<double>((color >> 24) & 0xFF) / static_cast<double>(255);
415  result.y = static_cast<double>((color >> 16) & 0xFF) / static_cast<double>(255);
416  result.z = static_cast<double>((color >> 8) & 0xFF) / static_cast<double>(255);
417  return result;
418  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec3<double> glm::f64_xbgr_cast< uint64 > ( uint64  color)

Definition at line 681 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

682  {
683  detail::tvec3<double> result;
684  result.x = static_cast<double>((color >> 48) & 0xFFFF) / static_cast<double>(65535);
685  result.y = static_cast<double>((color >> 32) & 0xFFFF) / static_cast<double>(65535);
686  result.z = static_cast<double>((color >> 16) & 0xFFFF) / static_cast<double>(65535);
687  return result;
688  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec3<double> glm::f64_xrgb_cast< uint32 > ( uint32  color)

Definition at line 391 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

392  {
393  detail::tvec3<double> result;
394  result.x = static_cast<double>((color >> 8) & 0xFF) / static_cast<double>(255);
395  result.y = static_cast<double>((color >> 16) & 0xFF) / static_cast<double>(255);
396  result.z = static_cast<double>((color >> 24) & 0xFF) / static_cast<double>(255);
397  return result;
398  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
template<>
GLM_FUNC_QUALIFIER detail::tvec3<double> glm::f64_xrgb_cast< uint64 > ( uint64  color)

Definition at line 661 of file color_cast.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

662  {
663  detail::tvec3<double> result;
664  result.x = static_cast<double>((color >> 16) & 0xFFFF) / static_cast<double>(65535);
665  result.y = static_cast<double>((color >> 32) & 0xFFFF) / static_cast<double>(65535);
666  result.z = static_cast<double>((color >> 48) & 0xFFFF) / static_cast<double>(65535);
667  return result;
668  }
GLuint color
Definition: glew.h:7185
GLuint64EXT * result
Definition: glew.h:12708
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::faceforward ( detail::fvec4SIMD const &  N,
detail::fvec4SIMD const &  I,
detail::fvec4SIMD const &  Nref 
)

Definition at line 666 of file simd_vec4.inl.

References glm::detail::sse_ffd_ps().

671 {
672  return detail::sse_ffd_ps(N.Data, I.Data, Nref.Data);
673 }
GLM_FUNC_QUALIFIER __m128 sse_ffd_ps(__m128 N, __m128 I, __m128 Nref)
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec2<valType> glm::factorial ( detail::tvec2< valType > const &  x)

Definition at line 104 of file integer.inl.

References factorial(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

106  {
107  return detail::tvec2<valType>(
108  factorial(x.x),
109  factorial(x.y));
110  }
GLM_FUNC_QUALIFIER detail::tvec4< valType > factorial(detail::tvec4< valType > const &x)
Definition: integer.inl:123
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec3<valType> glm::factorial ( detail::tvec3< valType > const &  x)

Definition at line 113 of file integer.inl.

References factorial(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

115  {
116  return detail::tvec3<valType>(
117  factorial(x.x),
118  factorial(x.y),
119  factorial(x.z));
120  }
GLM_FUNC_QUALIFIER detail::tvec4< valType > factorial(detail::tvec4< valType > const &x)
Definition: integer.inl:123
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec4<valType> glm::factorial ( detail::tvec4< valType > const &  x)

Definition at line 123 of file integer.inl.

References factorial(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

125  {
126  return detail::tvec4<valType>(
127  factorial(x.x),
128  factorial(x.y),
129  factorial(x.z),
130  factorial(x.w));
131  }
GLM_FUNC_QUALIFIER detail::tvec4< valType > factorial(detail::tvec4< valType > const &x)
Definition: integer.inl:123
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType<T> glm::fade ( vecType< T > const &  t)

Definition at line 67 of file noise.inl.

References T.

Referenced by perlin().

68  {
69  return t * t * t * (t * (t * T(6) - T(15)) + T(10));
70  }
GLdouble GLdouble t
Definition: glew.h:1384
template<typename T >
GLM_FUNC_QUALIFIER T glm::fastExp ( const T  x)

Definition at line 66 of file fast_exponential.inl.

References T.

67  {
68  // This has a better looking and same performance in release mode than the following code. However, in debug mode it's slower.
69  // return 1.0f + x * (1.0f + x * 0.5f * (1.0f + x * 0.3333333333f * (1.0f + x * 0.25 * (1.0f + x * 0.2f))));
70  T x2 = x * x;
71  T x3 = x2 * x;
72  T x4 = x3 * x;
73  T x5 = x4 * x;
74  return T(1) + x + (x2 * T(0.5)) + (x3 * T(0.1666666667)) + (x4 * T(0.041666667)) + (x5 * T(0.008333333333));
75  }
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename genType >
GLM_FUNC_QUALIFIER genType glm::fastExp2 ( genType const &  x)

Definition at line 132 of file fast_exponential.inl.

References fastExp().

133  {
134  return fastExp(0.69314718055994530941723212145818f * x);
135  }
GLM_FUNC_QUALIFIER T fastExp(const T x)
GLclampf f
Definition: glew.h:3390
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::fastInversesqrt ( detail::fvec4SIMD const &  x)

Definition at line 722 of file simd_vec4.inl.

Referenced by fastNormalize(), and fastSqrt().

723 {
724  return _mm_rsqrt_ps(x.Data);
725 }
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER valType glm::fastLength ( detail::tvec2< valType > const &  x)

Definition at line 58 of file fast_square_root.inl.

References fastSqrt(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

61  {
62  valType sqr = x.x * x.x + x.y * x.y;
63  return fastSqrt(sqr);
64  }
GLM_FUNC_QUALIFIER genType fastSqrt(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER valType glm::fastLength ( detail::tvec3< valType > const &  x)

Definition at line 68 of file fast_square_root.inl.

References fastSqrt(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

71  {
72  valType sqr = x.x * x.x + x.y * x.y + x.z * x.z;
73  return fastSqrt(sqr);
74  }
GLM_FUNC_QUALIFIER genType fastSqrt(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER valType glm::fastLength ( detail::tvec4< valType > const &  x)

Definition at line 78 of file fast_square_root.inl.

References fastSqrt(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

81  {
82  valType sqr = x.x * x.x + x.y * x.y + x.z * x.z + x.w * x.w;
83  return fastSqrt(sqr);
84  }
GLM_FUNC_QUALIFIER genType fastSqrt(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER float glm::fastLength ( detail::fvec4SIMD const &  x)

Definition at line 547 of file simd_vec4.inl.

References fastSqrt(), and glm::detail::sse_dot_ss().

550 {
551  detail::fvec4SIMD dot0 = detail::sse_dot_ss(x.Data, x.Data);
552  detail::fvec4SIMD sqt0 = fastSqrt(dot0);
553  float Result = 0;
554  _mm_store_ss(&Result, sqt0.Data);
555  return Result;
556 }
GLM_FUNC_QUALIFIER __m128 sse_dot_ss(__m128 v1, __m128 v2)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD fastSqrt(detail::fvec4SIMD const &x)
Definition: simd_vec4.inl:704
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::fastLength4 ( detail::fvec4SIMD const &  x)

Definition at line 579 of file simd_vec4.inl.

References dot4(), and fastSqrt().

582 {
583  return fastSqrt(dot4(x, x));
584 }
GLM_FUNC_QUALIFIER detail::fvec4SIMD dot4(detail::fvec4SIMD const &x, detail::fvec4SIMD const &y)
Definition: simd_vec4.inl:626
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD fastSqrt(detail::fvec4SIMD const &x)
Definition: simd_vec4.inl:704
template<typename genType >
GLM_FUNC_QUALIFIER genType glm::fastLog ( genType const &  x)

Definition at line 114 of file fast_exponential.inl.

References log().

115  {
116  return std::log(x);
117  }
GLM_FUNC_DECL genType log(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename genType >
GLM_FUNC_QUALIFIER genType glm::fastLog2 ( genType const &  x)

Definition at line 141 of file fast_exponential.inl.

References fastLog().

142  {
143  return fastLog(x) / 0.69314718055994530941723212145818f;
144  }
GLM_FUNC_QUALIFIER genType fastLog(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec2<valType> glm::fastNormalize ( detail::tvec2< valType > const &  x)

Definition at line 109 of file fast_square_root.inl.

References fastInverseSqrt(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

112  {
113  valType sqr = x.x * x.x + x.y * x.y;
114  return x * fastInverseSqrt(sqr);
115  }
GLM_FUNC_QUALIFIER genType fastInverseSqrt(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec3<valType> glm::fastNormalize ( detail::tvec3< valType > const &  x)

Definition at line 119 of file fast_square_root.inl.

References fastInverseSqrt(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

122  {
123  valType sqr = x.x * x.x + x.y * x.y + x.z * x.z;
124  return x * fastInverseSqrt(sqr);
125  }
GLM_FUNC_QUALIFIER genType fastInverseSqrt(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec4<valType> glm::fastNormalize ( detail::tvec4< valType > const &  x)

Definition at line 129 of file fast_square_root.inl.

References fastInverseSqrt(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

132  {
133  valType sqr = x.x * x.x + x.y * x.y + x.z * x.z + x.w * x.w;
134  return x * fastInverseSqrt(sqr);
135  }
GLM_FUNC_QUALIFIER genType fastInverseSqrt(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::fastNormalize ( detail::fvec4SIMD const &  x)

Definition at line 655 of file simd_vec4.inl.

References fastInversesqrt(), and glm::detail::sse_dot_ps().

658 {
659  __m128 dot0 = detail::sse_dot_ps(x.Data, x.Data);
660  __m128 isr0 = fastInversesqrt(dot0).Data;
661  __m128 mul0 = _mm_mul_ps(x.Data, isr0);
662  return mul0;
663 }
GLM_FUNC_QUALIFIER detail::fvec4SIMD fastInversesqrt(detail::fvec4SIMD const &x)
Definition: simd_vec4.inl:722
GLM_FUNC_QUALIFIER __m128 sse_dot_ps(__m128 v1, __m128 v2)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER valType glm::fastNormalizeDot ( detail::tvec2< valType > const &  x,
detail::tvec2< valType > const &  y 
)

Definition at line 79 of file normalize_dot.inl.

References dot(), and fastInverseSqrt().

83  {
84  return
85  glm::dot(x, y) *
87  glm::dot(y, y));
88  }
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
genType fastInverseSqrt(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER valType glm::fastNormalizeDot ( detail::tvec3< valType > const &  x,
detail::tvec3< valType > const &  y 
)

Definition at line 92 of file normalize_dot.inl.

References dot(), and fastInverseSqrt().

96  {
97  return
98  glm::dot(x, y) *
100  glm::dot(y, y));
101  }
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
genType fastInverseSqrt(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER valType glm::fastNormalizeDot ( detail::tvec4< valType > const &  x,
detail::tvec4< valType > const &  y 
)

Definition at line 105 of file normalize_dot.inl.

References dot(), and fastInverseSqrt().

109  {
110  return
111  glm::dot(x, y) *
113  glm::dot(y, y));
114  }
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
genType fastInverseSqrt(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER T glm::fastPow ( const T  x,
int  y 
)

Definition at line 22 of file fast_exponential.inl.

References T.

23  {
24  T f = T(1);
25  for(int i = 0; i < y; ++i)
26  f *= x;
27  return f;
28  }
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLclampf f
Definition: glew.h:3390
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::fastPow ( const detail::tvec2< T > &  x,
const detail::tvec2< int > &  y 
)

Definition at line 31 of file fast_exponential.inl.

References fastPow(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

34  {
35  return detail::tvec2<T>(
36  fastPow(x.x, y.x),
37  fastPow(x.y, y.y));
38  }
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::tvec4< T > fastPow(const detail::tvec4< T > &x, const detail::tvec4< int > &y)
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::fastPow ( const detail::tvec3< T > &  x,
const detail::tvec3< int > &  y 
)

Definition at line 41 of file fast_exponential.inl.

References fastPow(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

44  {
45  return detail::tvec3<T>(
46  fastPow(x.x, y.x),
47  fastPow(x.y, y.y),
48  fastPow(x.z, y.z));
49  }
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::tvec4< T > fastPow(const detail::tvec4< T > &x, const detail::tvec4< int > &y)
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::fastPow ( const detail::tvec4< T > &  x,
const detail::tvec4< int > &  y 
)

Definition at line 52 of file fast_exponential.inl.

References fastPow(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

55  {
56  return detail::tvec4<T>(
57  fastPow(x.x, y.x),
58  fastPow(x.y, y.y),
59  fastPow(x.z, y.z),
60  fastPow(x.w, y.w));
61  }
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::tvec4< T > fastPow(const detail::tvec4< T > &x, const detail::tvec4< int > &y)
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::fastSqrt ( detail::fvec4SIMD const &  x)

Definition at line 704 of file simd_vec4.inl.

References fastInversesqrt().

705 {
706  return _mm_mul_ps(fastInversesqrt(x.Data).Data, x.Data);
707 }
GLM_FUNC_QUALIFIER detail::fvec4SIMD fastInversesqrt(detail::fvec4SIMD const &x)
Definition: simd_vec4.inl:722
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename genIUType >
GLM_FUNC_QUALIFIER int glm::findLSB ( genIUType const &  Value)

Definition at line 474 of file func_integer.inl.

References GLM_STATIC_ASSERT.

477  {
478  GLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer, "'findLSB' only accept integer values");
479  if(Value == 0)
480  return -1;
481 
482  genIUType Bit;
483  for(Bit = genIUType(0); !(Value & (1 << Bit)); ++Bit){}
484  return Bit;
485  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<int> glm::findLSB ( detail::tvec2< T > const &  value)

Definition at line 489 of file func_integer.inl.

References findLSB().

492  {
493  return detail::tvec2<int>(
494  findLSB(value[0]),
495  findLSB(value[1]));
496  }
GLM_FUNC_QUALIFIER detail::tvec4< int > findLSB(detail::tvec4< T > const &value)
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<int> glm::findLSB ( detail::tvec3< T > const &  value)

Definition at line 500 of file func_integer.inl.

References findLSB().

503  {
504  return detail::tvec3<int>(
505  findLSB(value[0]),
506  findLSB(value[1]),
507  findLSB(value[2]));
508  }
GLM_FUNC_QUALIFIER detail::tvec4< int > findLSB(detail::tvec4< T > const &value)
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<int> glm::findLSB ( detail::tvec4< T > const &  value)

Definition at line 512 of file func_integer.inl.

References findLSB().

515  {
516  return detail::tvec4<int>(
517  findLSB(value[0]),
518  findLSB(value[1]),
519  findLSB(value[2]),
520  findLSB(value[3]));
521  }
GLM_FUNC_QUALIFIER detail::tvec4< int > findLSB(detail::tvec4< T > const &value)
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename genIUType >
GLM_FUNC_QUALIFIER int glm::findMSB ( genIUType const &  Value)

Definition at line 585 of file func_integer.inl.

References GLM_STATIC_ASSERT.

588  {
589  GLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer, "'findMSB' only accept integer values");
590 
591  if(Value == genIUType(0) || Value == genIUType(-1))
592  return -1;
593  else if(Value > 0)
594  {
595  genIUType Bit = genIUType(-1);
596  for(genIUType tmp = Value; tmp > 0; tmp >>= 1, ++Bit){}
597  return Bit;
598  }
599  else //if(Value < 0)
600  {
601  int const BitCount(sizeof(genIUType) * 8);
602  int MostSignificantBit(-1);
603  for(int BitIndex(0); BitIndex < BitCount; ++BitIndex)
604  MostSignificantBit = (Value & (1 << BitIndex)) ? MostSignificantBit : BitIndex;
605  assert(MostSignificantBit >= 0);
606  return MostSignificantBit;
607  }
608  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<int> glm::findMSB ( detail::tvec2< T > const &  value)

Definition at line 613 of file func_integer.inl.

References findMSB().

616  {
617  return detail::tvec2<int>(
618  findMSB(value[0]),
619  findMSB(value[1]));
620  }
GLsizei const GLfloat * value
Definition: glew.h:1835
GLM_FUNC_QUALIFIER detail::tvec4< int > findMSB(detail::tvec4< T > const &value)
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<int> glm::findMSB ( detail::tvec3< T > const &  value)

Definition at line 624 of file func_integer.inl.

References findMSB().

627  {
628  return detail::tvec3<int>(
629  findMSB(value[0]),
630  findMSB(value[1]),
631  findMSB(value[2]));
632  }
GLsizei const GLfloat * value
Definition: glew.h:1835
GLM_FUNC_QUALIFIER detail::tvec4< int > findMSB(detail::tvec4< T > const &value)
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<int> glm::findMSB ( detail::tvec4< T > const &  value)

Definition at line 636 of file func_integer.inl.

References findMSB().

639  {
640  return detail::tvec4<int>(
641  findMSB(value[0]),
642  findMSB(value[1]),
643  findMSB(value[2]),
644  findMSB(value[3]));
645  }
GLsizei const GLfloat * value
Definition: glew.h:1835
GLM_FUNC_QUALIFIER detail::tvec4< int > findMSB(detail::tvec4< T > const &value)
GLM_FUNC_QUALIFIER int glm::floatBitsToInt ( float const &  value)

Definition at line 954 of file func_common.inl.

955  {
956  union
957  {
958  float f;
959  int i;
960  } fi;
961 
962  fi.f = value;
963  return fi.i;
964  }
GLclampf f
Definition: glew.h:3390
GLsizei const GLfloat * value
Definition: glew.h:1835
GLM_FUNC_QUALIFIER detail::tvec2<int> glm::floatBitsToInt ( detail::tvec2< float > const &  value)

Definition at line 967 of file func_common.inl.

References floatBitsToInt(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

970  {
971  return detail::tvec2<int>(
973  floatBitsToInt(value.y));
974  }
GLsizei const GLfloat * value
Definition: glew.h:1835
GLM_FUNC_QUALIFIER detail::tvec4< int > floatBitsToInt(detail::tvec4< float > const &value)
GLM_FUNC_QUALIFIER detail::tvec3<int> glm::floatBitsToInt ( detail::tvec3< float > const &  value)

Definition at line 977 of file func_common.inl.

References floatBitsToInt(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

980  {
981  return detail::tvec3<int>(
984  floatBitsToInt(value.z));
985  }
GLsizei const GLfloat * value
Definition: glew.h:1835
GLM_FUNC_QUALIFIER detail::tvec4< int > floatBitsToInt(detail::tvec4< float > const &value)
GLM_FUNC_QUALIFIER detail::tvec4<int> glm::floatBitsToInt ( detail::tvec4< float > const &  value)

Definition at line 988 of file func_common.inl.

References floatBitsToInt(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

991  {
992  return detail::tvec4<int>(
996  floatBitsToInt(value.w));
997  }
GLsizei const GLfloat * value
Definition: glew.h:1835
GLM_FUNC_QUALIFIER detail::tvec4< int > floatBitsToInt(detail::tvec4< float > const &value)
GLM_FUNC_QUALIFIER uint glm::floatBitsToUint ( float const &  value)

Definition at line 999 of file func_common.inl.

1000  {
1001  union
1002  {
1003  float f;
1004  uint u;
1005  } fu;
1006 
1007  fu.f = value;
1008  return fu.u;
1009  }
uint_t uint
Definition: type_int.hpp:131
GLclampf f
Definition: glew.h:3390
GLsizei const GLfloat * value
Definition: glew.h:1835
GLM_FUNC_QUALIFIER detail::tvec2<uint> glm::floatBitsToUint ( detail::tvec2< float > const &  value)

Definition at line 1012 of file func_common.inl.

References floatBitsToUint(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

1015  {
1016  return detail::tvec2<uint>(
1018  floatBitsToUint(value.y));
1019  }
GLM_FUNC_QUALIFIER detail::tvec4< uint > floatBitsToUint(detail::tvec4< float > const &value)
GLsizei const GLfloat * value
Definition: glew.h:1835
GLM_FUNC_QUALIFIER detail::tvec3<uint> glm::floatBitsToUint ( detail::tvec3< float > const &  value)

Definition at line 1022 of file func_common.inl.

References floatBitsToUint(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

1025  {
1026  return detail::tvec3<uint>(
1029  floatBitsToUint(value.z));
1030  }
GLM_FUNC_QUALIFIER detail::tvec4< uint > floatBitsToUint(detail::tvec4< float > const &value)
GLsizei const GLfloat * value
Definition: glew.h:1835
GLM_FUNC_QUALIFIER detail::tvec4<uint> glm::floatBitsToUint ( detail::tvec4< float > const &  value)

Definition at line 1033 of file func_common.inl.

References floatBitsToUint(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

1036  {
1037  return detail::tvec4<uint>(
1041  floatBitsToUint(value.w));
1042  }
GLM_FUNC_QUALIFIER detail::tvec4< uint > floatBitsToUint(detail::tvec4< float > const &value)
GLsizei const GLfloat * value
Definition: glew.h:1835
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::floor ( detail::fvec4SIMD const &  x)

Definition at line 304 of file simd_vec4.inl.

References glm::detail::sse_flr_ps().

307 {
308  return detail::sse_flr_ps(x.Data);
309 }
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER __m128 sse_flr_ps(__m128 x)
template<>
GLM_FUNC_QUALIFIER detail::half glm::floor< detail::half > ( detail::half const &  x)

Definition at line 99 of file func_common.inl.

References floor().

100  {
101  return detail::half(::std::floor(float(x)));
102  }
detail::half half
Definition: half_float.hpp:357
GLM_FUNC_QUALIFIER genType floor(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::fma ( detail::fvec4SIMD const &  a,
detail::fvec4SIMD const &  b,
detail::fvec4SIMD const &  c 
)

Definition at line 525 of file simd_vec4.inl.

530 {
531  return _mm_add_ps(_mm_mul_ps(a.Data, b.Data), c.Data);
532 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::fract ( detail::fvec4SIMD const &  x)

Definition at line 356 of file simd_vec4.inl.

References glm::detail::sse_frc_ps().

359 {
360  return detail::sse_frc_ps(x.Data);
361 }
GLM_FUNC_QUALIFIER __m128 sse_frc_ps(__m128 x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename genType >
GLM_FUNC_QUALIFIER genType glm::frexp ( genType const &  x,
int exp 
)

Definition at line 1148 of file func_common.inl.

References frexp().

1152  {
1153  return std::frexp(x, exp);
1154  }
GLM_FUNC_QUALIFIER detail::tvec4< T > frexp(detail::tvec4< T > const &x, detail::tvec4< int > &exp)
GLM_FUNC_DECL genType exp(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::frexp ( detail::tvec2< T > const &  x,
detail::tvec2< int > &  exp 
)

Definition at line 1158 of file func_common.inl.

References frexp().

1162  {
1163  return std::frexp(x, exp);
1164  }
GLM_FUNC_QUALIFIER detail::tvec4< T > frexp(detail::tvec4< T > const &x, detail::tvec4< int > &exp)
GLM_FUNC_DECL genType exp(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::frexp ( detail::tvec3< T > const &  x,
detail::tvec3< int > &  exp 
)

Definition at line 1168 of file func_common.inl.

References frexp().

1172  {
1173  return std::frexp(x, exp);
1174  }
GLM_FUNC_QUALIFIER detail::tvec4< T > frexp(detail::tvec4< T > const &x, detail::tvec4< int > &exp)
GLM_FUNC_DECL genType exp(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::frexp ( detail::tvec4< T > const &  x,
detail::tvec4< int > &  exp 
)

Definition at line 1178 of file func_common.inl.

Referenced by frexp(), and ldexp().

1182  {
1183  return std::frexp(x, exp);
1184  }
GLM_FUNC_QUALIFIER detail::tvec4< T > frexp(detail::tvec4< T > const &x, detail::tvec4< int > &exp)
GLM_FUNC_DECL genType exp(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tmat4x4<valType> glm::frustum ( valType const &  left,
valType const &  right,
valType const &  bottom,
valType const &  top,
valType const &  nearVal,
valType const &  farVal 
)

Definition at line 210 of file matrix_transform.inl.

218  {
219  detail::tmat4x4<valType> Result(0);
220  Result[0][0] = (valType(2) * nearVal) / (right - left);
221  Result[1][1] = (valType(2) * nearVal) / (top - bottom);
222  Result[2][0] = (right + left) / (right - left);
223  Result[2][1] = (top + bottom) / (top - bottom);
224  Result[2][2] = -(farVal + nearVal) / (farVal - nearVal);
225  Result[2][3] = valType(-1);
226  Result[3][2] = -(valType(2) * farVal * nearVal) / (farVal - nearVal);
227  return Result;
228  }
GLfloat GLfloat GLfloat top
Definition: glew.h:13816
GLfloat right
Definition: glew.h:13816
GLint GLint bottom
Definition: glew.h:7291
GLint left
Definition: glew.h:7291
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::grad4 ( T const &  j,
detail::tvec4< T > const &  ip 
)

Definition at line 73 of file noise.inl.

References abs(), dot(), floor(), fract(), lessThan(), T, and glm::detail::tvec4< T >::w.

Referenced by noise1(), and simplex().

74  {
75  detail::tvec3<T> pXYZ = floor(fract(detail::tvec3<T>(j) * detail::tvec3<T>(ip)) * T(7)) * ip[2] - T(1);
76  T pW = T(1.5) - dot(abs(pXYZ), detail::tvec3<T>(1));
77  detail::tvec4<T> s = detail::tvec4<T>(lessThan(detail::tvec4<T>(pXYZ, pW), detail::tvec4<T>(0.0)));
78  pXYZ = pXYZ + (detail::tvec3<T>(s) * T(2) - T(1)) * s.w;
79  return detail::tvec4<T>(pXYZ, pW);
80  }
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLM_FUNC_DECL vecType::bool_type lessThan(vecType const &x, vecType const &y)
GLdouble s
Definition: glew.h:1376
GLM_FUNC_DECL genType fract(genType const &x)
GLM_FUNC_DECL genType floor(genType const &x)
GLM_FUNC_DECL genType abs(genType const &x)
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType<T>::bool_type glm::greaterThan ( vecType< T > const &  x,
vecType< T > const &  y 
)

Definition at line 72 of file func_vector_relational.inl.

References GLM_STATIC_ASSERT.

76  {
77  GLM_STATIC_ASSERT(detail::is_vector<vecType<T> >::_YES,
78  "Invalid template instantiation of 'greaterThan', GLM vector types required");
79  GLM_STATIC_ASSERT(detail::is_bool<T>::_NO,
80  "Invalid template instantiation of 'greaterThan', GLM vector types required floating-point or integer value types vectors");
81  assert(x.length() == y.length());
82 
83  typename vecType<bool>::bool_type Result(vecType<bool>::null);
84  for(typename vecType<bool>::size_type i = 0; i < x.length(); ++i)
85  Result[i] = x[i] > y[i];
86  return Result;
87  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType<T>::bool_type glm::greaterThanEqual ( vecType< T > const &  x,
vecType< T > const &  y 
)

Definition at line 91 of file func_vector_relational.inl.

References GLM_STATIC_ASSERT.

95  {
96  GLM_STATIC_ASSERT(detail::is_vector<vecType<T> >::_YES,
97  "Invalid template instantiation of 'greaterThanEqual', GLM vector types required");
98  GLM_STATIC_ASSERT(detail::is_bool<T>::_NO,
99  "Invalid template instantiation of 'greaterThanEqual', GLM vector types required floating-point or integer value types vectors");
100  assert(x.length() == y.length());
101 
102  typename vecType<bool>::bool_type Result(vecType<bool>::null);
103  for(typename vecType<bool>::size_type i = 0; i < x.length(); ++i)
104  Result[i] = x[i] >= y[i];
105  return Result;
106  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER detail::half glm::higherMultiple ( detail::half const &  SourceH,
detail::half const &  MultipleH 
)

Definition at line 36 of file multiple.inl.

References int(), and glm::detail::half::toFloat().

40  {
41  float Source = SourceH.toFloat();
42  float Multiple = MultipleH.toFloat();
43 
44  int Tmp = int(float(Source)) % int(Multiple);
45  return detail::half(Tmp ? Source + Multiple - float(Tmp) : Source);
46  }
detail::half half
Definition: half_float.hpp:357
typedef int(WINAPI *PFNWGLRELEASEPBUFFERDCARBPROC)(HPBUFFERARB hPbuffer
template<>
GLM_FUNC_QUALIFIER float glm::higherMultiple ( float const &  Source,
float const &  Multiple 
)

Definition at line 50 of file multiple.inl.

References int().

54  {
55  int Tmp = int(Source) % int(Multiple);
56  return Tmp ? Source + Multiple - float(Tmp) : Source;
57  }
typedef int(WINAPI *PFNWGLRELEASEPBUFFERDCARBPROC)(HPBUFFERARB hPbuffer
template<>
GLM_FUNC_QUALIFIER double glm::higherMultiple ( double const &  Source,
double const &  Multiple 
)

Definition at line 61 of file multiple.inl.

65  {
66  long Tmp = long(Source) % long(Multiple);
67  return Tmp ? Source + Multiple - double(Tmp) : Source;
68  }
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec2<int> glm::highestBit ( detail::tvec2< valType > const &  value)

Definition at line 281 of file bit.inl.

References highestBit().

284  {
285  return detail::tvec2<int>(
286  highestBit(value[0]),
287  highestBit(value[1]));
288  }
GLM_FUNC_QUALIFIER detail::tvec4< int > highestBit(detail::tvec4< valType > const &value)
Definition: bit.inl:304
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec3<int> glm::highestBit ( detail::tvec3< valType > const &  value)

Definition at line 292 of file bit.inl.

References highestBit().

295  {
296  return detail::tvec3<int>(
297  highestBit(value[0]),
298  highestBit(value[1]),
299  highestBit(value[2]));
300  }
GLM_FUNC_QUALIFIER detail::tvec4< int > highestBit(detail::tvec4< valType > const &value)
Definition: bit.inl:304
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec4<int> glm::highestBit ( detail::tvec4< valType > const &  value)

Definition at line 304 of file bit.inl.

References highestBit().

307  {
308  return detail::tvec4<int>(
309  highestBit(value[0]),
310  highestBit(value[1]),
311  highestBit(value[2]),
312  highestBit(value[3]));
313  }
GLM_FUNC_QUALIFIER detail::tvec4< int > highestBit(detail::tvec4< valType > const &value)
Definition: bit.inl:304
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec2<int> glm::highestBitValue ( detail::tvec2< valType > const &  value)

Definition at line 334 of file bit.inl.

References highestBitValue().

337  {
338  return detail::tvec2<int>(
340  highestBitValue(value[1]));
341  }
GLM_FUNC_QUALIFIER detail::tvec4< int > highestBitValue(detail::tvec4< valType > const &value)
Definition: bit.inl:357
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec3<int> glm::highestBitValue ( detail::tvec3< valType > const &  value)

Definition at line 345 of file bit.inl.

References highestBitValue().

348  {
349  return detail::tvec3<int>(
352  highestBitValue(value[2]));
353  }
GLM_FUNC_QUALIFIER detail::tvec4< int > highestBitValue(detail::tvec4< valType > const &value)
Definition: bit.inl:357
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec4<int> glm::highestBitValue ( detail::tvec4< valType > const &  value)

Definition at line 357 of file bit.inl.

References highestBitValue().

360  {
361  return detail::tvec4<int>(
365  highestBitValue(value[3]));
366  }
GLM_FUNC_QUALIFIER detail::tvec4< int > highestBitValue(detail::tvec4< valType > const &value)
Definition: bit.inl:357
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::hsvColor ( const detail::tvec3< T > &  rgbColor)

Definition at line 70 of file color_space.inl.

References max(), min(), rgbColor(), T, glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

71  {
72  detail::tvec3<T> hsv = rgbColor;
73  float Min = min(min(rgbColor.r, rgbColor.g), rgbColor.b);
74  float Max = max(max(rgbColor.r, rgbColor.g), rgbColor.b);
75  float Delta = Max - Min;
76 
77  hsv.z = Max;
78 
79  if(Max != T(0))
80  {
81  hsv.y = Delta / hsv.z;
82  T h = T(0);
83 
84  if(rgbColor.r == Max)
85  // between yellow & magenta
86  h = T(0) + T(60) * (rgbColor.g - rgbColor.b) / Delta;
87  else if(rgbColor.g == Max)
88  // between cyan & yellow
89  h = T(120) + T(60) * (rgbColor.b - rgbColor.r) / Delta;
90  else
91  // between magenta & cyan
92  h = T(240) + T(60) * (rgbColor.r - rgbColor.g) / Delta;
93 
94  if(h < T(0))
95  hsv.x = h + T(360);
96  else
97  hsv.x = h;
98  }
99  else
100  {
101  // If r = g = b = 0 then s = 0, h is undefined
102  hsv.y = T(0);
103  hsv.x = T(0);
104  }
105 
106  return hsv;
107  }
GLM_FUNC_QUALIFIER detail::tvec3< T > rgbColor(const detail::tvec3< T > &hsvColor)
Definition: color_space.inl:13
GLM_FUNC_DECL genType min(genType const &x, genType const &y)
GLfloat GLfloat GLfloat GLfloat h
Definition: glew.h:7294
GLM_FUNC_DECL genType max(genType const &x, genType const &y)
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::imulExtended ( detail::tvec2< T > const &  x,
detail::tvec2< T > const &  y,
detail::tvec2< T > &  msb,
detail::tvec2< T > &  lsb 
)

Definition at line 232 of file func_integer.inl.

References imulExtended().

238  {
239  return detail::tvec2<T>(
240  imulExtended(x[0], y[0], msb, lsb),
241  imulExtended(x[1], y[1], msb, lsb));
242  }
GLM_FUNC_QUALIFIER detail::tvec4< T > imulExtended(detail::tvec4< T > const &x, detail::tvec4< T > const &y, detail::tvec4< T > &msb, detail::tvec4< T > &lsb)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::imulExtended ( detail::tvec3< T > const &  x,
detail::tvec3< T > const &  y,
detail::tvec3< T > &  msb,
detail::tvec3< T > &  lsb 
)

Definition at line 246 of file func_integer.inl.

References imulExtended().

252  {
253  return detail::tvec3<T>(
254  imulExtended(x[0], y[0], msb, lsb),
255  imulExtended(x[1], y[1], msb, lsb),
256  imulExtended(x[2], y[2], msb, lsb));
257  }
GLM_FUNC_QUALIFIER detail::tvec4< T > imulExtended(detail::tvec4< T > const &x, detail::tvec4< T > const &y, detail::tvec4< T > &msb, detail::tvec4< T > &lsb)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::imulExtended ( detail::tvec4< T > const &  x,
detail::tvec4< T > const &  y,
detail::tvec4< T > &  msb,
detail::tvec4< T > &  lsb 
)

Definition at line 261 of file func_integer.inl.

References imulExtended().

267  {
268  return detail::tvec4<T>(
269  imulExtended(x[0], y[0], msb, lsb),
270  imulExtended(x[1], y[1], msb, lsb),
271  imulExtended(x[2], y[2], msb, lsb),
272  imulExtended(x[3], y[3], msb, lsb));
273  }
GLM_FUNC_QUALIFIER detail::tvec4< T > imulExtended(detail::tvec4< T > const &x, detail::tvec4< T > const &y, detail::tvec4< T > &msb, detail::tvec4< T > &lsb)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER float glm::intBitsToFloat ( int const &  value)

Definition at line 1044 of file func_common.inl.

1045  {
1046  union
1047  {
1048  float f;
1049  int i;
1050  } fi;
1051 
1052  fi.i = value;
1053  return fi.f;
1054  }
GLclampf f
Definition: glew.h:3390
GLsizei const GLfloat * value
Definition: glew.h:1835
GLM_FUNC_QUALIFIER detail::tvec2<float> glm::intBitsToFloat ( detail::tvec2< int > const &  value)

Definition at line 1058 of file func_common.inl.

References intBitsToFloat(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

1061  {
1062  return detail::tvec2<float>(
1063  intBitsToFloat(value.x),
1064  intBitsToFloat(value.y));
1065  }
GLM_FUNC_QUALIFIER detail::tvec4< float > intBitsToFloat(detail::tvec4< int > const &value)
GLsizei const GLfloat * value
Definition: glew.h:1835
GLM_FUNC_QUALIFIER detail::tvec3<float> glm::intBitsToFloat ( detail::tvec3< int > const &  value)

Definition at line 1068 of file func_common.inl.

References intBitsToFloat(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

1071  {
1072  return detail::tvec3<float>(
1073  intBitsToFloat(value.x),
1074  intBitsToFloat(value.y),
1075  intBitsToFloat(value.z));
1076  }
GLM_FUNC_QUALIFIER detail::tvec4< float > intBitsToFloat(detail::tvec4< int > const &value)
GLsizei const GLfloat * value
Definition: glew.h:1835
GLM_FUNC_QUALIFIER detail::tvec4<float> glm::intBitsToFloat ( detail::tvec4< int > const &  value)

Definition at line 1079 of file func_common.inl.

References intBitsToFloat(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

1082  {
1083  return detail::tvec4<float>(
1084  intBitsToFloat(value.x),
1085  intBitsToFloat(value.y),
1086  intBitsToFloat(value.z),
1087  intBitsToFloat(value.w));
1088  }
GLM_FUNC_QUALIFIER detail::tvec4< float > intBitsToFloat(detail::tvec4< int > const &value)
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename T >
GLM_FUNC_QUALIFIER detail::tquat<T> glm::intermediate ( detail::tquat< T > const &  prev,
detail::tquat< T > const &  curr,
detail::tquat< T > const &  next 
)

Definition at line 48 of file quaternion.inl.

References exp(), inverse(), log(), and T.

53  {
54  detail::tquat<T> invQuat = inverse(curr);
55  return exp((log(next + invQuat) + log(prev + invQuat)) / T(-4)) * curr;
56  }
GLM_FUNC_QUALIFIER detail::tquat< T > exp(detail::tquat< T > const &q)
Definition: quaternion.inl:60
GLM_FUNC_QUALIFIER detail::tquat< T > inverse(detail::tquat< T > const &q)
Definition: quaternion.inl:539
GLM_FUNC_QUALIFIER detail::tquat< T > log(detail::tquat< T > const &q)
Definition: quaternion.inl:72
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat2x2<T> glm::inverse ( detail::tmat2x2< T > const &  m)

Definition at line 473 of file func_matrix.inl.

References determinant(), GLM_STATIC_ASSERT, and T.

476  {
477  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'inverse' only accept floating-point inputs");
478 
479  //valType Determinant = m[0][0] * m[1][1] - m[1][0] * m[0][1];
480  T Determinant = determinant(m);
481 
482  detail::tmat2x2<T> Inverse(
483  + m[1][1] / Determinant,
484  - m[0][1] / Determinant,
485  - m[1][0] / Determinant,
486  + m[0][0] / Determinant);
487 
488  return Inverse;
489  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
GLM_FUNC_QUALIFIER detail::tmat4x4< T >::value_type determinant(detail::tmat4x4< T > const &m)
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat3x3<T> glm::inverse ( detail::tmat3x3< T > const &  m)

Definition at line 493 of file func_matrix.inl.

References determinant(), GLM_STATIC_ASSERT, and T.

496  {
497  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'inverse' only accept floating-point inputs");
498 
499  //valType Determinant = m[0][0] * (m[1][1] * m[2][2] - m[2][1] * m[1][2])
500  // - m[1][0] * (m[0][1] * m[2][2] - m[2][1] * m[0][2])
501  // + m[2][0] * (m[0][1] * m[1][2] - m[1][1] * m[0][2]);
502 
503  T Determinant = determinant(m);
504 
505  detail::tmat3x3<T> Inverse(detail::tmat3x3<T>::null);
506  Inverse[0][0] = + (m[1][1] * m[2][2] - m[2][1] * m[1][2]);
507  Inverse[1][0] = - (m[1][0] * m[2][2] - m[2][0] * m[1][2]);
508  Inverse[2][0] = + (m[1][0] * m[2][1] - m[2][0] * m[1][1]);
509  Inverse[0][1] = - (m[0][1] * m[2][2] - m[2][1] * m[0][2]);
510  Inverse[1][1] = + (m[0][0] * m[2][2] - m[2][0] * m[0][2]);
511  Inverse[2][1] = - (m[0][0] * m[2][1] - m[2][0] * m[0][1]);
512  Inverse[0][2] = + (m[0][1] * m[1][2] - m[1][1] * m[0][2]);
513  Inverse[1][2] = - (m[0][0] * m[1][2] - m[1][0] * m[0][2]);
514  Inverse[2][2] = + (m[0][0] * m[1][1] - m[1][0] * m[0][1]);
515  Inverse /= Determinant;
516 
517  return Inverse;
518  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
GLM_FUNC_QUALIFIER detail::tmat4x4< T >::value_type determinant(detail::tmat4x4< T > const &m)
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat4x4<T> glm::inverse ( detail::tmat4x4< T > const &  m)

Definition at line 522 of file func_matrix.inl.

References dot(), GLM_STATIC_ASSERT, and T.

525  {
526  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'inverse' only accept floating-point inputs");
527 
528  T Coef00 = m[2][2] * m[3][3] - m[3][2] * m[2][3];
529  T Coef02 = m[1][2] * m[3][3] - m[3][2] * m[1][3];
530  T Coef03 = m[1][2] * m[2][3] - m[2][2] * m[1][3];
531 
532  T Coef04 = m[2][1] * m[3][3] - m[3][1] * m[2][3];
533  T Coef06 = m[1][1] * m[3][3] - m[3][1] * m[1][3];
534  T Coef07 = m[1][1] * m[2][3] - m[2][1] * m[1][3];
535 
536  T Coef08 = m[2][1] * m[3][2] - m[3][1] * m[2][2];
537  T Coef10 = m[1][1] * m[3][2] - m[3][1] * m[1][2];
538  T Coef11 = m[1][1] * m[2][2] - m[2][1] * m[1][2];
539 
540  T Coef12 = m[2][0] * m[3][3] - m[3][0] * m[2][3];
541  T Coef14 = m[1][0] * m[3][3] - m[3][0] * m[1][3];
542  T Coef15 = m[1][0] * m[2][3] - m[2][0] * m[1][3];
543 
544  T Coef16 = m[2][0] * m[3][2] - m[3][0] * m[2][2];
545  T Coef18 = m[1][0] * m[3][2] - m[3][0] * m[1][2];
546  T Coef19 = m[1][0] * m[2][2] - m[2][0] * m[1][2];
547 
548  T Coef20 = m[2][0] * m[3][1] - m[3][0] * m[2][1];
549  T Coef22 = m[1][0] * m[3][1] - m[3][0] * m[1][1];
550  T Coef23 = m[1][0] * m[2][1] - m[2][0] * m[1][1];
551 
552  detail::tvec4<T> const SignA(+1, -1, +1, -1);
553  detail::tvec4<T> const SignB(-1, +1, -1, +1);
554 
555  detail::tvec4<T> Fac0(Coef00, Coef00, Coef02, Coef03);
556  detail::tvec4<T> Fac1(Coef04, Coef04, Coef06, Coef07);
557  detail::tvec4<T> Fac2(Coef08, Coef08, Coef10, Coef11);
558  detail::tvec4<T> Fac3(Coef12, Coef12, Coef14, Coef15);
559  detail::tvec4<T> Fac4(Coef16, Coef16, Coef18, Coef19);
560  detail::tvec4<T> Fac5(Coef20, Coef20, Coef22, Coef23);
561 
562  detail::tvec4<T> Vec0(m[1][0], m[0][0], m[0][0], m[0][0]);
563  detail::tvec4<T> Vec1(m[1][1], m[0][1], m[0][1], m[0][1]);
564  detail::tvec4<T> Vec2(m[1][2], m[0][2], m[0][2], m[0][2]);
565  detail::tvec4<T> Vec3(m[1][3], m[0][3], m[0][3], m[0][3]);
566 
567  detail::tvec4<T> Inv0 = SignA * (Vec1 * Fac0 - Vec2 * Fac1 + Vec3 * Fac2);
568  detail::tvec4<T> Inv1 = SignB * (Vec0 * Fac0 - Vec2 * Fac3 + Vec3 * Fac4);
569  detail::tvec4<T> Inv2 = SignA * (Vec0 * Fac1 - Vec1 * Fac3 + Vec3 * Fac5);
570  detail::tvec4<T> Inv3 = SignB * (Vec0 * Fac2 - Vec1 * Fac4 + Vec2 * Fac5);
571 
572  detail::tmat4x4<T> Inverse(Inv0, Inv1, Inv2, Inv3);
573 
574  detail::tvec4<T> Row0(Inverse[0][0], Inverse[1][0], Inverse[2][0], Inverse[3][0]);
575 
576  T Determinant = glm::dot(m[0], Row0);
577 
578  Inverse /= Determinant;
579 
580  return Inverse;
581  }
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
GLM_FUNC_QUALIFIER detail::fmat4x4SIMD glm::inverse ( detail::fmat4x4SIMD const &  m)

Definition at line 583 of file simd_mat4.inl.

References glm::detail::sse_inverse_ps().

584 {
585  detail::fmat4x4SIMD result;
586  detail::sse_inverse_ps(&m[0].Data, &result[0].Data);
587  return result;
588 }
GLM_FUNC_QUALIFIER void sse_inverse_ps(__m128 const in[4], __m128 out[4])
const GLdouble * m
Definition: glew.h:8385
GLuint64EXT * result
Definition: glew.h:12708
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::inversesqrt ( detail::fvec4SIMD const &  x)

Definition at line 711 of file simd_vec4.inl.

References GLM_ALIGN, and glm::detail::three.

712 {
713  GLM_ALIGN(4) static const __m128 three = {3, 3, 3, 3}; // aligned consts for fast load
714  GLM_ALIGN(4) static const __m128 half = {0.5,0.5,0.5,0.5};
715 
716  __m128 recip = _mm_rsqrt_ps(x.Data); // "estimate" opcode
717  __m128 halfrecip = _mm_mul_ps(half, recip);
718  __m128 threeminus_xrr = _mm_sub_ps(three, _mm_mul_ps(x.Data, _mm_mul_ps(recip, recip)));
719  return _mm_mul_ps(halfrecip, threeminus_xrr);
720 }
#define GLM_ALIGN
Definition: _detail.hpp:475
detail::half half
Definition: half_float.hpp:357
static const __m128 GLM_VAR_USED three
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tmat2x2<valType> glm::inverseTranspose ( detail::tmat2x2< valType > const &  m)

Definition at line 61 of file matrix_inverse.inl.

64  {
65  valType Determinant = m[0][0] * m[1][1] - m[1][0] * m[0][1];
66 
67  detail::tmat2x2<valType> Inverse(
68  + m[1][1] / Determinant,
69  - m[0][1] / Determinant,
70  - m[1][0] / Determinant,
71  + m[0][0] / Determinant);
72 
73  return Inverse;
74  }
const GLdouble * m
Definition: glew.h:8385
template<typename valType >
GLM_FUNC_QUALIFIER detail::tmat3x3<valType> glm::inverseTranspose ( detail::tmat3x3< valType > const &  m)

Definition at line 78 of file matrix_inverse.inl.

81  {
82  valType Determinant =
83  + m[0][0] * (m[1][1] * m[2][2] - m[1][2] * m[2][1])
84  - m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0])
85  + m[0][2] * (m[1][0] * m[2][1] - m[1][1] * m[2][0]);
86 
87  detail::tmat3x3<valType> Inverse;
88  Inverse[0][0] = + (m[1][1] * m[2][2] - m[2][1] * m[1][2]);
89  Inverse[0][1] = - (m[1][0] * m[2][2] - m[2][0] * m[1][2]);
90  Inverse[0][2] = + (m[1][0] * m[2][1] - m[2][0] * m[1][1]);
91  Inverse[1][0] = - (m[0][1] * m[2][2] - m[2][1] * m[0][2]);
92  Inverse[1][1] = + (m[0][0] * m[2][2] - m[2][0] * m[0][2]);
93  Inverse[1][2] = - (m[0][0] * m[2][1] - m[2][0] * m[0][1]);
94  Inverse[2][0] = + (m[0][1] * m[1][2] - m[1][1] * m[0][2]);
95  Inverse[2][1] = - (m[0][0] * m[1][2] - m[1][0] * m[0][2]);
96  Inverse[2][2] = + (m[0][0] * m[1][1] - m[1][0] * m[0][1]);
97  Inverse /= Determinant;
98 
99  return Inverse;
100  }
const GLdouble * m
Definition: glew.h:8385
template<typename valType >
GLM_FUNC_QUALIFIER detail::tmat4x4<valType> glm::inverseTranspose ( detail::tmat4x4< valType > const &  m)

Definition at line 104 of file matrix_inverse.inl.

107  {
108  valType SubFactor00 = m[2][2] * m[3][3] - m[3][2] * m[2][3];
109  valType SubFactor01 = m[2][1] * m[3][3] - m[3][1] * m[2][3];
110  valType SubFactor02 = m[2][1] * m[3][2] - m[3][1] * m[2][2];
111  valType SubFactor03 = m[2][0] * m[3][3] - m[3][0] * m[2][3];
112  valType SubFactor04 = m[2][0] * m[3][2] - m[3][0] * m[2][2];
113  valType SubFactor05 = m[2][0] * m[3][1] - m[3][0] * m[2][1];
114  valType SubFactor06 = m[1][2] * m[3][3] - m[3][2] * m[1][3];
115  valType SubFactor07 = m[1][1] * m[3][3] - m[3][1] * m[1][3];
116  valType SubFactor08 = m[1][1] * m[3][2] - m[3][1] * m[1][2];
117  valType SubFactor09 = m[1][0] * m[3][3] - m[3][0] * m[1][3];
118  valType SubFactor10 = m[1][0] * m[3][2] - m[3][0] * m[1][2];
119  valType SubFactor11 = m[1][1] * m[3][3] - m[3][1] * m[1][3];
120  valType SubFactor12 = m[1][0] * m[3][1] - m[3][0] * m[1][1];
121  valType SubFactor13 = m[1][2] * m[2][3] - m[2][2] * m[1][3];
122  valType SubFactor14 = m[1][1] * m[2][3] - m[2][1] * m[1][3];
123  valType SubFactor15 = m[1][1] * m[2][2] - m[2][1] * m[1][2];
124  valType SubFactor16 = m[1][0] * m[2][3] - m[2][0] * m[1][3];
125  valType SubFactor17 = m[1][0] * m[2][2] - m[2][0] * m[1][2];
126  valType SubFactor18 = m[1][0] * m[2][1] - m[2][0] * m[1][1];
127 
128  detail::tmat4x4<valType> Inverse;
129  Inverse[0][0] = + (m[1][1] * SubFactor00 - m[1][2] * SubFactor01 + m[1][3] * SubFactor02);
130  Inverse[0][1] = - (m[1][0] * SubFactor00 - m[1][2] * SubFactor03 + m[1][3] * SubFactor04);
131  Inverse[0][2] = + (m[1][0] * SubFactor01 - m[1][1] * SubFactor03 + m[1][3] * SubFactor05);
132  Inverse[0][3] = - (m[1][0] * SubFactor02 - m[1][1] * SubFactor04 + m[1][2] * SubFactor05);
133 
134  Inverse[1][0] = - (m[0][1] * SubFactor00 - m[0][2] * SubFactor01 + m[0][3] * SubFactor02);
135  Inverse[1][1] = + (m[0][0] * SubFactor00 - m[0][2] * SubFactor03 + m[0][3] * SubFactor04);
136  Inverse[1][2] = - (m[0][0] * SubFactor01 - m[0][1] * SubFactor03 + m[0][3] * SubFactor05);
137  Inverse[1][3] = + (m[0][0] * SubFactor02 - m[0][1] * SubFactor04 + m[0][2] * SubFactor05);
138 
139  Inverse[2][0] = + (m[0][1] * SubFactor06 - m[0][2] * SubFactor07 + m[0][3] * SubFactor08);
140  Inverse[2][1] = - (m[0][0] * SubFactor06 - m[0][2] * SubFactor09 + m[0][3] * SubFactor10);
141  Inverse[2][2] = + (m[0][0] * SubFactor11 - m[0][1] * SubFactor09 + m[0][3] * SubFactor12);
142  Inverse[2][3] = - (m[0][0] * SubFactor08 - m[0][1] * SubFactor10 + m[0][2] * SubFactor12);
143 
144  Inverse[3][0] = - (m[0][1] * SubFactor13 - m[0][2] * SubFactor14 + m[0][3] * SubFactor15);
145  Inverse[3][1] = + (m[0][0] * SubFactor13 - m[0][2] * SubFactor16 + m[0][3] * SubFactor17);
146  Inverse[3][2] = - (m[0][0] * SubFactor14 - m[0][1] * SubFactor16 + m[0][3] * SubFactor18);
147  Inverse[3][3] = + (m[0][0] * SubFactor15 - m[0][1] * SubFactor17 + m[0][2] * SubFactor18);
148 
149  valType Determinant =
150  + m[0][0] * Inverse[0][0]
151  + m[0][1] * Inverse[0][1]
152  + m[0][2] * Inverse[0][2]
153  + m[0][3] * Inverse[0][3];
154 
155  Inverse /= Determinant;
156 
157  return Inverse;
158  }
const GLdouble * m
Definition: glew.h:8385
template<typename T >
GLM_FUNC_QUALIFIER bool glm::isCompNull ( T const &  s,
T const &  epsilon 
)

Definition at line 107 of file vector_query.inl.

References abs(), and epsilon().

111  {
112  return abs(s) < epsilon;
113  }
GLdouble s
Definition: glew.h:1376
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<bool> glm::isCompNull ( detail::tvec2< T > const &  v,
T const &  epsilon 
)

Definition at line 117 of file vector_query.inl.

References abs(), epsilon(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

120  {
121  return detail::tvec2<bool>(
122  (abs(v.x) < epsilon),
123  (abs(v.y) < epsilon));
124  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
const GLdouble * v
Definition: glew.h:1377
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<bool> glm::isCompNull ( detail::tvec3< T > const &  v,
T const &  epsilon 
)

Definition at line 128 of file vector_query.inl.

References abs(), epsilon(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

132  {
133  return detail::tvec3<bool>(
134  abs(v.x) < epsilon,
135  abs(v.y) < epsilon,
136  abs(v.z) < epsilon);
137  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
const GLdouble * v
Definition: glew.h:1377
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<bool> glm::isCompNull ( detail::tvec4< T > const &  v,
T const &  epsilon 
)

Definition at line 141 of file vector_query.inl.

References abs(), epsilon(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

145  {
146  return detail::tvec4<bool>(
147  abs(v.x) < epsilon,
148  abs(v.y) < epsilon,
149  abs(v.z) < epsilon,
150  abs(v.w) < epsilon);
151  }
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
GLM_FUNC_DECL genType abs(genType const &x)
const GLdouble * v
Definition: glew.h:1377
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T>::bool_type glm::isinf ( detail::tvec2< T > const &  x)

Definition at line 920 of file func_common.inl.

References isinf(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

923  {
924  return typename detail::tvec2<T>::bool_type(
925  isinf(x.x),
926  isinf(x.y));
927  }
GLM_FUNC_QUALIFIER detail::tvec4< T >::bool_type isinf(detail::tvec4< T > const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T>::bool_type glm::isinf ( detail::tvec3< T > const &  x)

Definition at line 931 of file func_common.inl.

References isinf(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

934  {
935  return typename detail::tvec3<T>::bool_type(
936  isinf(x.x),
937  isinf(x.y),
938  isinf(x.z));
939  }
GLM_FUNC_QUALIFIER detail::tvec4< T >::bool_type isinf(detail::tvec4< T > const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T>::bool_type glm::isinf ( detail::tvec4< T > const &  x)

Definition at line 943 of file func_common.inl.

References isinf(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

Referenced by isinf().

946  {
947  return typename detail::tvec4<T>::bool_type(
948  isinf(x.x),
949  isinf(x.y),
950  isinf(x.z),
951  isinf(x.w));
952  }
GLM_FUNC_QUALIFIER detail::tvec4< T >::bool_type isinf(detail::tvec4< T > const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T>::bool_type glm::isnan ( detail::tvec2< T > const &  x)

Definition at line 862 of file func_common.inl.

References isnan(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

865  {
866  return typename detail::tvec2<T>::bool_type(
867  isnan(x.x),
868  isnan(x.y));
869  }
GLM_FUNC_QUALIFIER detail::tvec4< T >::bool_type isnan(detail::tvec4< T > const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T>::bool_type glm::isnan ( detail::tvec3< T > const &  x)

Definition at line 873 of file func_common.inl.

References isnan(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

876  {
877  return typename detail::tvec3<T>::bool_type(
878  isnan(x.x),
879  isnan(x.y),
880  isnan(x.z));
881  }
GLM_FUNC_QUALIFIER detail::tvec4< T >::bool_type isnan(detail::tvec4< T > const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T>::bool_type glm::isnan ( detail::tvec4< T > const &  x)

Definition at line 885 of file func_common.inl.

References isnan(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

Referenced by isnan().

888  {
889  return typename detail::tvec4<T>::bool_type(
890  isnan(x.x),
891  isnan(x.y),
892  isnan(x.z),
893  isnan(x.w));
894  }
GLM_FUNC_QUALIFIER detail::tvec4< T >::bool_type isnan(detail::tvec4< T > const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename genType >
GLM_FUNC_QUALIFIER bool glm::isNormalized ( detail::tmat2x2< genType > const &  m,
genType const &  epsilon 
)

Definition at line 75 of file matrix_query.inl.

References isNormalized(), and glm::detail::tmat2x2< T >::length().

79  {
80  bool result(true);
81  for(typename detail::tmat2x2<genType>::size_type i(0); result && i < m.length(); ++i)
83  for(typename detail::tmat2x2<genType>::size_type i(0); result && i < m.length(); ++i)
84  {
85  typename detail::tmat2x2<genType>::col_type v;
86  for(typename detail::tmat2x2<genType>::size_type j(0); j < m.length(); ++j)
87  v[j] = m[j][i];
89  }
90  return result;
91  }
const GLdouble * m
Definition: glew.h:8385
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
const GLdouble * v
Definition: glew.h:1377
GLM_FUNC_QUALIFIER bool isNormalized(detail::tmat4x4< genType > const &m, genType const &epsilon)
GLuint64EXT * result
Definition: glew.h:12708
template<typename genType >
GLM_FUNC_QUALIFIER bool glm::isNormalized ( detail::tmat3x3< genType > const &  m,
genType const &  epsilon 
)

Definition at line 95 of file matrix_query.inl.

References isNormalized(), and glm::detail::tmat3x3< T >::length().

99  {
100  bool result(true);
101  for(typename detail::tmat3x3<genType>::size_type i(0); result && i < m.length(); ++i)
102  result = isNormalized(m[i], epsilon);
103  for(typename detail::tmat3x3<genType>::size_type i(0); result && i < m.length(); ++i)
104  {
105  typename detail::tmat3x3<genType>::col_type v;
106  for(typename detail::tmat3x3<genType>::size_type j(0); j < m.length(); ++j)
107  v[j] = m[j][i];
109  }
110  return result;
111  }
const GLdouble * m
Definition: glew.h:8385
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
const GLdouble * v
Definition: glew.h:1377
GLM_FUNC_QUALIFIER bool isNormalized(detail::tmat4x4< genType > const &m, genType const &epsilon)
GLuint64EXT * result
Definition: glew.h:12708
template<typename genType >
GLM_FUNC_QUALIFIER bool glm::isNormalized ( detail::tmat4x4< genType > const &  m,
genType const &  epsilon 
)

Definition at line 115 of file matrix_query.inl.

References isNormalized(), and glm::detail::tmat4x4< T >::length().

119  {
120  bool result(true);
121  for(typename detail::tmat4x4<genType>::size_type i(0); result && i < m.length(); ++i)
122  result = isNormalized(m[i], epsilon);
123  for(typename detail::tmat4x4<genType>::size_type i(0); result && i < m.length(); ++i)
124  {
125  typename detail::tmat4x4<genType>::col_type v;
126  for(typename detail::tmat4x4<genType>::size_type j(0); j < m.length(); ++j)
127  v[j] = m[j][i];
129  }
130  return result;
131  }
const GLdouble * m
Definition: glew.h:8385
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
const GLdouble * v
Definition: glew.h:1377
GLM_FUNC_QUALIFIER bool isNormalized(detail::tmat4x4< genType > const &m, genType const &epsilon)
GLuint64EXT * result
Definition: glew.h:12708
template<typename genType , template< typename > class matType>
GLM_FUNC_QUALIFIER bool glm::isOrthogonal ( matType< genType > const &  m,
genType const &  epsilon 
)

Definition at line 135 of file matrix_query.inl.

References areOrthogonal(), and transpose().

139  {
140  bool result(true);
141  for(typename matType<genType>::size_type i(0); result && i < m.length() - 1; ++i)
142  for(typename matType<genType>::size_type j(i + 1); result && j < m.length(); ++j)
143  result = areOrthogonal(m[i], m[j], epsilon);
144 
145  if(result)
146  {
147  matType<genType> tmp = transpose(m);
148  for(typename matType<genType>::size_type i(0); result && i < m.length() - 1 ; ++i)
149  for(typename matType<genType>::size_type j(i + 1); result && j < m.length(); ++j)
150  result = areOrthogonal(tmp[i], tmp[j], epsilon);
151  }
152  return result;
153  }
GLsizei GLboolean transpose
Definition: glew.h:1850
const GLdouble * m
Definition: glew.h:8385
GLM_FUNC_DECL genType epsilon()
Definition: constants.inl:32
bool areOrthogonal(genType const &v0, genType const &v1, typename genType::value_type const &epsilon)
From GLM_GTX_vector_query extensions.
GLuint64EXT * result
Definition: glew.h:12708
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec2<bool> glm::isPowerOfTwo ( detail::tvec2< valType > const &  value)

Definition at line 384 of file bit.inl.

References isPowerOfTwo().

387  {
388  return detail::tvec2<bool>(
389  isPowerOfTwo(value[0]),
390  isPowerOfTwo(value[1]));
391  }
GLM_FUNC_QUALIFIER detail::tvec4< bool > isPowerOfTwo(detail::tvec4< valType > const &value)
Definition: bit.inl:407
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec3<bool> glm::isPowerOfTwo ( detail::tvec3< valType > const &  value)

Definition at line 395 of file bit.inl.

References isPowerOfTwo().

398  {
399  return detail::tvec3<bool>(
400  isPowerOfTwo(value[0]),
401  isPowerOfTwo(value[1]),
402  isPowerOfTwo(value[2]));
403  }
GLM_FUNC_QUALIFIER detail::tvec4< bool > isPowerOfTwo(detail::tvec4< valType > const &value)
Definition: bit.inl:407
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec4<bool> glm::isPowerOfTwo ( detail::tvec4< valType > const &  value)

Definition at line 407 of file bit.inl.

References isPowerOfTwo().

410  {
411  return detail::tvec4<bool>(
412  isPowerOfTwo(value[0]),
413  isPowerOfTwo(value[1]),
414  isPowerOfTwo(value[2]),
415  isPowerOfTwo(value[3]));
416  }
GLM_FUNC_QUALIFIER detail::tvec4< bool > isPowerOfTwo(detail::tvec4< valType > const &value)
Definition: bit.inl:407
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename genType >
GLM_FUNC_QUALIFIER genType glm::ldexp ( genType const &  x,
int const &  exp 
)

Definition at line 1188 of file func_common.inl.

References frexp().

1192  {
1193  return std::frexp(x, exp);
1194  }
GLM_FUNC_QUALIFIER detail::tvec4< T > frexp(detail::tvec4< T > const &x, detail::tvec4< int > &exp)
GLM_FUNC_DECL genType exp(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::ldexp ( detail::tvec2< T > const &  x,
detail::tvec2< int > const &  exp 
)

Definition at line 1198 of file func_common.inl.

References frexp().

1202  {
1203  return std::frexp(x, exp);
1204  }
GLM_FUNC_QUALIFIER detail::tvec4< T > frexp(detail::tvec4< T > const &x, detail::tvec4< int > &exp)
GLM_FUNC_DECL genType exp(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::ldexp ( detail::tvec3< T > const &  x,
detail::tvec3< int > const &  exp 
)

Definition at line 1208 of file func_common.inl.

References frexp().

1212  {
1213  return std::frexp(x, exp);
1214  }
GLM_FUNC_QUALIFIER detail::tvec4< T > frexp(detail::tvec4< T > const &x, detail::tvec4< int > &exp)
GLM_FUNC_DECL genType exp(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::ldexp ( detail::tvec4< T > const &  x,
detail::tvec4< int > const &  exp 
)

Definition at line 1218 of file func_common.inl.

References frexp().

1222  {
1223  return std::frexp(x, exp);
1224  }
GLM_FUNC_QUALIFIER detail::tvec4< T > frexp(detail::tvec4< T > const &x, detail::tvec4< int > &exp)
GLM_FUNC_DECL genType exp(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T>::value_type glm::length ( detail::tvec2< T > const &  v)

Definition at line 46 of file func_geometric.inl.

References GLM_STATIC_ASSERT, sqrt(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

49  {
50  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'length' only accept floating-point inputs");
51 
52  typename detail::tvec2<T>::value_type sqr = v.x * v.x + v.y * v.y;
53  return sqrt(sqr);
54  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * v
Definition: glew.h:1377
GLM_FUNC_DECL genType sqrt(genType const &x)
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T>::value_type glm::length ( detail::tvec3< T > const &  v)

Definition at line 58 of file func_geometric.inl.

References GLM_STATIC_ASSERT, sqrt(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

61  {
62  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'length' only accept floating-point inputs");
63 
64  typename detail::tvec3<T>::value_type sqr = v.x * v.x + v.y * v.y + v.z * v.z;
65  return sqrt(sqr);
66  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * v
Definition: glew.h:1377
GLM_FUNC_DECL genType sqrt(genType const &x)
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T>::value_type glm::length ( detail::tvec4< T > const &  v)

Definition at line 70 of file func_geometric.inl.

References GLM_STATIC_ASSERT, sqrt(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

73  {
74  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'length' only accept floating-point inputs");
75 
76  typename detail::tvec4<T>::value_type sqr = v.x * v.x + v.y * v.y + v.z * v.z + v.w * v.w;
77  return sqrt(sqr);
78  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * v
Definition: glew.h:1377
GLM_FUNC_DECL genType sqrt(genType const &x)
GLM_FUNC_QUALIFIER float glm::length ( detail::fvec4SIMD const &  x)

Definition at line 535 of file simd_vec4.inl.

References sqrt(), and glm::detail::sse_dot_ss().

538 {
539  detail::fvec4SIMD dot0 = detail::sse_dot_ss(x.Data, x.Data);
540  detail::fvec4SIMD sqt0 = sqrt(dot0);
541  float Result = 0;
542  _mm_store_ss(&Result, sqt0.Data);
543  return Result;
544 }
GLM_FUNC_QUALIFIER __m128 sse_dot_ss(__m128 v1, __m128 v2)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD sqrt(detail::fvec4SIMD const &x)
Definition: simd_vec4.inl:694
template<typename T >
GLM_FUNC_QUALIFIER T glm::length2 ( detail::tvec2< T > const &  x)

Definition at line 23 of file norm.inl.

References dot().

26  {
27  return dot(x, x);
28  }
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER T glm::length2 ( detail::tvec3< T > const &  x)

Definition at line 32 of file norm.inl.

References dot().

35  {
36  return dot(x, x);
37  }
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER T glm::length2 ( detail::tvec4< T > const &  x)

Definition at line 41 of file norm.inl.

References dot().

44  {
45  return dot(x, x);
46  }
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::length4 ( detail::fvec4SIMD const &  x)

Definition at line 571 of file simd_vec4.inl.

References dot4(), and sqrt().

574 {
575  return sqrt(dot4(x, x));
576 }
GLM_FUNC_QUALIFIER detail::fvec4SIMD dot4(detail::fvec4SIMD const &x, detail::fvec4SIMD const &y)
Definition: simd_vec4.inl:626
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD sqrt(detail::fvec4SIMD const &x)
Definition: simd_vec4.inl:694
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType<T>::bool_type glm::lessThan ( vecType< T > const &  x,
vecType< T > const &  y 
)

Definition at line 33 of file func_vector_relational.inl.

References GLM_STATIC_ASSERT.

37  {
38  GLM_STATIC_ASSERT(detail::is_vector<vecType<T> >::_YES,
39  "Invalid template instantiation of 'lessThan', GLM vector types required");
40  GLM_STATIC_ASSERT(detail::is_bool<T>::_NO,
41  "Invalid template instantiation of 'lessThan', GLM vector types required floating-point or integer value types vectors");
42  assert(x.length() == y.length());
43 
44  typename vecType<bool>::bool_type Result(vecType<bool>::null);
45  for(typename vecType<bool>::size_type i = 0; i < x.length(); ++i)
46  Result[i] = x[i] < y[i];
47 
48  return Result;
49  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType<T>::bool_type glm::lessThanEqual ( vecType< T > const &  x,
vecType< T > const &  y 
)

Definition at line 53 of file func_vector_relational.inl.

References GLM_STATIC_ASSERT.

57  {
58  GLM_STATIC_ASSERT(detail::is_vector<vecType<T> >::_YES,
59  "Invalid template instantiation of 'lessThanEqual', GLM vector types required");
60  GLM_STATIC_ASSERT(detail::is_bool<T>::_NO,
61  "Invalid template instantiation of 'lessThanEqual', GLM vector types required floating-point or integer value types vectors");
62  assert(x.length() == y.length());
63 
64  typename vecType<bool>::bool_type Result(vecType<bool>::null);
65  for(typename vecType<bool>::size_type i = 0; i < x.length(); ++i)
66  Result[i] = x[i] <= y[i];
67  return Result;
68  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tquat<T> glm::log ( detail::tquat< T > const &  q)

Definition at line 72 of file quaternion.inl.

References atan(), log(), sqrt(), T, glm::detail::tquat< T >::w, glm::detail::tquat< T >::x, glm::detail::tquat< T >::y, and glm::detail::tquat< T >::z.

75  {
76  if((q.x == T(0)) && (q.y == T(0)) && (q.z == T(0)))
77  {
78  if(q.w > T(0))
79  return detail::tquat<T>(log(q.w), T(0), T(0), T(0));
80  else if(q.w < T(0))
81  return detail::tquat<T>(log(-q.w), T(3.1415926535897932384626433832795), T(0),T(0));
82  else
83  return detail::tquat<T>(std::numeric_limits<T>::infinity(), std::numeric_limits<T>::infinity(), std::numeric_limits<T>::infinity(), std::numeric_limits<T>::infinity());
84  }
85  else
86  {
87  T Vec3Len = sqrt(q.x * q.x + q.y * q.y + q.z * q.z);
88  T QuatLen = sqrt(Vec3Len * Vec3Len + q.w * q.w);
89  T t = atan(Vec3Len, T(q.w)) / Vec3Len;
90  return detail::tquat<T>(t * q.x, t * q.y, t * q.z, log(QuatLen));
91  }
92  }
GLdouble GLdouble t
Definition: glew.h:1384
GLM_FUNC_DECL genType atan(genType const &y, genType const &x)
GLM_FUNC_DECL genType sqrt(genType const &x)
GLdouble GLdouble GLdouble GLdouble q
Definition: glew.h:1400
GLM_FUNC_QUALIFIER detail::tquat< T > log(detail::tquat< T > const &q)
Definition: quaternion.inl:72
template<>
GLM_FUNC_QUALIFIER detail::half glm::lowerMultiple ( detail::half const &  SourceH,
detail::half const &  MultipleH 
)

Definition at line 93 of file multiple.inl.

References int(), and glm::detail::half::toFloat().

97  {
98  float Source = SourceH.toFloat();
99  float Multiple = MultipleH.toFloat();
100 
101  int Tmp = int(float(Source)) % int(float(Multiple));
102  return detail::half(Tmp ? Source - float(Tmp) : Source);
103  }
detail::half half
Definition: half_float.hpp:357
typedef int(WINAPI *PFNWGLRELEASEPBUFFERDCARBPROC)(HPBUFFERARB hPbuffer
template<>
GLM_FUNC_QUALIFIER float glm::lowerMultiple ( float const &  Source,
float const &  Multiple 
)

Definition at line 107 of file multiple.inl.

References int().

111  {
112  int Tmp = int(Source) % int(Multiple);
113  return Tmp ? Source - float(Tmp) : Source;
114  }
typedef int(WINAPI *PFNWGLRELEASEPBUFFERDCARBPROC)(HPBUFFERARB hPbuffer
template<>
GLM_FUNC_QUALIFIER double glm::lowerMultiple ( double const &  Source,
double const &  Multiple 
)

Definition at line 118 of file multiple.inl.

122  {
123  long Tmp = long(Source) % long(Multiple);
124  return Tmp ? Source - double(Tmp) : Source;
125  }
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec2<int> glm::lowestBit ( detail::tvec2< valType > const &  value)

Definition at line 220 of file bit.inl.

References lowestBit().

223  {
224  return detail::tvec2<int>(
225  lowestBit(value[0]),
226  lowestBit(value[1]));
227  }
GLM_FUNC_QUALIFIER detail::tvec4< int > lowestBit(detail::tvec4< valType > const &value)
Definition: bit.inl:243
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec3<int> glm::lowestBit ( detail::tvec3< valType > const &  value)

Definition at line 231 of file bit.inl.

References lowestBit().

234  {
235  return detail::tvec3<int>(
236  lowestBit(value[0]),
237  lowestBit(value[1]),
238  lowestBit(value[2]));
239  }
GLM_FUNC_QUALIFIER detail::tvec4< int > lowestBit(detail::tvec4< valType > const &value)
Definition: bit.inl:243
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec4<int> glm::lowestBit ( detail::tvec4< valType > const &  value)

Definition at line 243 of file bit.inl.

References lowestBit().

246  {
247  return detail::tvec4<int>(
248  lowestBit(value[0]),
249  lowestBit(value[1]),
250  lowestBit(value[2]),
251  lowestBit(value[3]));
252  }
GLM_FUNC_QUALIFIER detail::tvec4< int > lowestBit(detail::tvec4< valType > const &value)
Definition: bit.inl:243
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename T >
GLM_FUNC_QUALIFIER T glm::luminosity ( const detail::tvec3< T > &  color)

Definition at line 144 of file color_space.inl.

References dot().

145  {
146  const detail::tvec3<T> tmp = detail::tvec3<T>(0.33, 0.59, 0.11);
147  return dot(color, tmp);
148  }
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLuint color
Definition: glew.h:7185
GLM_FUNC_QUALIFIER detail::tmat4x4<float> glm::mat4_cast ( detail::fmat4x4SIMD const &  x)

Definition at line 524 of file simd_mat4.inl.

References GLM_ALIGN.

527 {
528  GLM_ALIGN(16) detail::tmat4x4<float> Result;
529  _mm_store_ps(&Result[0][0], x.Data[0].Data);
530  _mm_store_ps(&Result[1][0], x.Data[1].Data);
531  _mm_store_ps(&Result[2][0], x.Data[2].Data);
532  _mm_store_ps(&Result[3][0], x.Data[3].Data);
533  return Result;
534 }
#define GLM_ALIGN
Definition: _detail.hpp:475
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fmat4x4SIMD glm::matrixCompMult ( detail::fmat4x4SIMD const &  x,
detail::fmat4x4SIMD const &  y 
)

Definition at line 537 of file simd_mat4.inl.

541 {
542  detail::fmat4x4SIMD result;
543  result[0] = x[0] * y[0];
544  result[1] = x[1] * y[1];
545  result[2] = x[2] * y[2];
546  result[3] = x[3] * y[3];
547  return result;
548 }
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLuint64EXT * result
Definition: glew.h:12708
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::max ( detail::fvec4SIMD const &  x,
detail::fvec4SIMD const &  y 
)

Definition at line 409 of file simd_vec4.inl.

413 {
414  return _mm_max_ps(x.Data, y.Data);
415 }
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::max ( detail::fvec4SIMD const &  x,
float const &  y 
)

Definition at line 418 of file simd_vec4.inl.

422 {
423  return _mm_max_ps(x.Data, _mm_set1_ps(y));
424 }
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::min ( detail::fvec4SIMD const &  x,
detail::fvec4SIMD const &  y 
)

Definition at line 391 of file simd_vec4.inl.

395 {
396  return _mm_min_ps(x.Data, y.Data);
397 }
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::min ( detail::fvec4SIMD const &  x,
float const &  y 
)

Definition at line 400 of file simd_vec4.inl.

404 {
405  return _mm_min_ps(x.Data, _mm_set1_ps(y));
406 }
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::mirrorRepeat ( detail::tvec2< T > const &  Texcoord)

Definition at line 132 of file wrap.inl.

References mirrorRepeat().

135  {
136  detail::tvec2<T> Result;
137  for(typename detail::tvec2<T>::size_type i = 0; i < detail::tvec2<T>::value_size(); ++i)
138  Result[i] = mirrorRepeat(Texcoord[i]);
139  return Result;
140  }
GLM_FUNC_QUALIFIER detail::tvec4< T > mirrorRepeat(detail::tvec4< T > const &Texcoord)
Definition: wrap.inl:156
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::mirrorRepeat ( detail::tvec3< T > const &  Texcoord)

Definition at line 144 of file wrap.inl.

References mirrorRepeat().

147  {
148  detail::tvec3<T> Result;
149  for(typename detail::tvec3<T>::size_type i = 0; i < detail::tvec3<T>::value_size(); ++i)
150  Result[i] = mirrorRepeat(Texcoord[i]);
151  return Result;
152  }
GLM_FUNC_QUALIFIER detail::tvec4< T > mirrorRepeat(detail::tvec4< T > const &Texcoord)
Definition: wrap.inl:156
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::mirrorRepeat ( detail::tvec4< T > const &  Texcoord)

Definition at line 156 of file wrap.inl.

References mirrorRepeat().

159  {
160  detail::tvec4<T> Result;
161  for(typename detail::tvec4<T>::size_type i = 0; i < detail::tvec4<T>::value_size(); ++i)
162  Result[i] = mirrorRepeat(Texcoord[i]);
163  return Result;
164  }
GLM_FUNC_QUALIFIER detail::tvec4< T > mirrorRepeat(detail::tvec4< T > const &Texcoord)
Definition: wrap.inl:156
template<typename genType >
GLM_FUNC_QUALIFIER genType glm::mix ( genType const &  x,
genType const &  y,
genType const &  a 
)

Definition at line 425 of file func_common.inl.

References GLM_STATIC_ASSERT.

430  {
431  GLM_STATIC_ASSERT(detail::type<genType>::is_float , "'genType' is not floating-point type");
432 
433  return x + a * (y - x);
434  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec2<valType> glm::mix ( detail::tvec2< valType > const &  x,
detail::tvec2< valType > const &  y,
valType const &  a 
)

Definition at line 438 of file func_common.inl.

References GLM_STATIC_ASSERT.

443  {
444  GLM_STATIC_ASSERT(detail::type<valType>::is_float , "'genType' is not floating-point type");
445 
446  return x + a * (y - x);
447  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::mix ( detail::fvec4SIMD const &  x,
detail::fvec4SIMD const &  y,
detail::fvec4SIMD const &  a 
)

Definition at line 447 of file simd_vec4.inl.

452 {
453  __m128 Sub0 = _mm_sub_ps(y.Data, x.Data);
454  __m128 Mul0 = _mm_mul_ps(a.Data, Sub0);
455  return _mm_add_ps(x.Data, Mul0);
456 }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec3<valType> glm::mix ( detail::tvec3< valType > const &  x,
detail::tvec3< valType > const &  y,
valType const &  a 
)

Definition at line 451 of file func_common.inl.

456  {
457  return x + a * (y - x);
458  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec4<valType> glm::mix ( detail::tvec4< valType > const &  x,
detail::tvec4< valType > const &  y,
valType const &  a 
)

Definition at line 462 of file func_common.inl.

467  {
468  return x + a * (y - x);
469  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec2<valType> glm::mix ( detail::tvec2< valType > const &  x,
detail::tvec2< valType > const &  y,
detail::tvec2< valType > const &  a 
)

Definition at line 473 of file func_common.inl.

478  {
479  return x + a * (y - x);
480  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec3<valType> glm::mix ( detail::tvec3< valType > const &  x,
detail::tvec3< valType > const &  y,
detail::tvec3< valType > const &  a 
)

Definition at line 484 of file func_common.inl.

References GLM_STATIC_ASSERT.

489  {
490  GLM_STATIC_ASSERT(detail::type<valType>::is_float , "'genType' is not floating-point type");
491 
492  return x + a * (y - x);
493  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec4<valType> glm::mix ( detail::tvec4< valType > const &  x,
detail::tvec4< valType > const &  y,
detail::tvec4< valType > const &  a 
)

Definition at line 497 of file func_common.inl.

502  {
503  return x + a * (y - x);
504  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER float glm::mix ( float const &  x,
float const &  y,
bool const &  a 
)

Definition at line 524 of file func_common.inl.

529  {
530  return a ? y : x;
531  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER double glm::mix ( double const &  x,
double const &  y,
bool const &  a 
)

Definition at line 535 of file func_common.inl.

540  {
541  return a ? y : x;
542  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::mix ( detail::tvec2< T > const &  x,
detail::tvec2< T > const &  y,
bool  a 
)

Definition at line 546 of file func_common.inl.

References GLM_STATIC_ASSERT.

551  {
552  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'mix' only accept floating-point inputs");
553 
554  return a ? y : x;
555  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::mix ( detail::tvec3< T > const &  x,
detail::tvec3< T > const &  y,
bool  a 
)

Definition at line 559 of file func_common.inl.

References GLM_STATIC_ASSERT.

564  {
565  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'mix' only accept floating-point inputs");
566 
567  return a ? y : x;
568  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::mix ( detail::tvec4< T > const &  x,
detail::tvec4< T > const &  y,
bool  a 
)

Definition at line 572 of file func_common.inl.

References GLM_STATIC_ASSERT.

577  {
578  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'mix' only accept floating-point inputs");
579 
580  return a ? y : x;
581  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::mix ( detail::tvec2< T > const &  x,
detail::tvec2< T > const &  y,
typename detail::tvec2< T >::bool_type  a 
)

Definition at line 585 of file func_common.inl.

References GLM_STATIC_ASSERT, and glm::detail::tvec2< T >::length().

590  {
591  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'mix' only accept floating-point inputs");
592 
593  detail::tvec2<T> result;
594  for
595  (
596  typename detail::tvec2<T>::size_type i = 0;
597  i < x.length(); ++i
598  )
599  {
600  result[i] = a[i] ? y[i] : x[i];
601  }
602  return result;
603  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLuint64EXT * result
Definition: glew.h:12708
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::mix ( detail::tvec3< T > const &  x,
detail::tvec3< T > const &  y,
typename detail::tvec3< T >::bool_type  a 
)

Definition at line 607 of file func_common.inl.

References GLM_STATIC_ASSERT, and glm::detail::tvec3< T >::length().

612  {
613  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'mix' only accept floating-point inputs");
614 
615  detail::tvec3<T> result;
616  for
617  (
618  typename detail::tvec3<T>::size_type i = 0;
619  i < x.length(); ++i
620  )
621  {
622  result[i] = a[i] ? y[i] : x[i];
623  }
624  return result;
625  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLuint64EXT * result
Definition: glew.h:12708
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::mix ( detail::tvec4< T > const &  x,
detail::tvec4< T > const &  y,
typename detail::tvec4< T >::bool_type  a 
)

Definition at line 629 of file func_common.inl.

References GLM_STATIC_ASSERT, and glm::detail::tvec4< T >::length().

634  {
635  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'mix' only accept floating-point inputs");
636 
637  detail::tvec4<T> result;
638  for
639  (
640  typename detail::tvec4<T>::size_type i = 0;
641  i < x.length(); ++i
642  )
643  {
644  result[i] = a[i] ? y[i] : x[i];
645  }
646  return result;
647  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLuint64EXT * result
Definition: glew.h:12708
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::mod ( detail::fvec4SIMD const &  x,
detail::fvec4SIMD const &  y 
)

Definition at line 364 of file simd_vec4.inl.

References glm::detail::sse_mod_ps().

368 {
369  return detail::sse_mod_ps(x.Data, y.Data);
370 }
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLM_FUNC_QUALIFIER __m128 sse_mod_ps(__m128 x, __m128 y)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::mod ( detail::fvec4SIMD const &  x,
float const &  y 
)

Definition at line 373 of file simd_vec4.inl.

References glm::detail::sse_mod_ps().

377 {
378  return detail::sse_mod_ps(x.Data, _mm_set1_ps(y));
379 }
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLM_FUNC_QUALIFIER __m128 sse_mod_ps(__m128 x, __m128 y)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER T glm::mod289 ( T const &  x)

Definition at line 37 of file noise.inl.

References floor(), and T.

Referenced by noise1(), perlin(), permute(), and simplex().

38  {
39  return x - floor(x * T(1.0 / 289.0)) * T(289.0);
40  }
GLM_FUNC_DECL genType floor(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec2<valType> glm::modf ( detail::tvec2< valType > const &  x,
detail::tvec2< valType > &  i 
)

Definition at line 238 of file func_common.inl.

References modf(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

242  {
243  return detail::tvec2<valType>(
244  modf(x.x, i.x),
245  modf(x.y, i.y));
246  }
GLM_FUNC_QUALIFIER detail::tvec4< valType > modf(detail::tvec4< valType > const &x, detail::tvec4< valType > &i)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec3<valType> glm::modf ( detail::tvec3< valType > const &  x,
detail::tvec3< valType > &  i 
)

Definition at line 250 of file func_common.inl.

References modf(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

254  {
255  return detail::tvec3<valType>(
256  modf(x.x, i.x),
257  modf(x.y, i.y),
258  modf(x.z, i.z));
259  }
GLM_FUNC_QUALIFIER detail::tvec4< valType > modf(detail::tvec4< valType > const &x, detail::tvec4< valType > &i)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tvec4<valType> glm::modf ( detail::tvec4< valType > const &  x,
detail::tvec4< valType > &  i 
)

Definition at line 263 of file func_common.inl.

References modf(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

Referenced by modf().

267  {
268  return detail::tvec4<valType>(
269  modf(x.x, i.x),
270  modf(x.y, i.y),
271  modf(x.z, i.z),
272  modf(x.w, i.w));
273  }
GLM_FUNC_QUALIFIER detail::tvec4< valType > modf(detail::tvec4< valType > const &x, detail::tvec4< valType > &i)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat2x2<T> glm::mul ( detail::tmat2x2< T > const &  a,
detail::tmat2x2< T > const &  b 
)

Definition at line 26 of file verbose_operator.inl.

30  {
31  return a * b;
32  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat3x3<T> glm::mul ( detail::tmat3x3< T > const &  a,
detail::tmat3x3< T > const &  b 
)

Definition at line 36 of file verbose_operator.inl.

40  {
41  return a * b;
42  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat4x4<T> glm::mul ( detail::tmat4x4< T > const &  a,
detail::tmat4x4< T > const &  b 
)

Definition at line 46 of file verbose_operator.inl.

50  {
51  return a * b;
52  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::mul ( detail::tmat2x2< T > const &  m,
detail::tvec2< T > const &  v 
)

Definition at line 56 of file verbose_operator.inl.

60  {
61  return m * v;
62  }
const GLdouble * m
Definition: glew.h:8385
const GLdouble * v
Definition: glew.h:1377
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::mul ( detail::tmat3x3< T > const &  m,
detail::tvec3< T > const &  v 
)

Definition at line 66 of file verbose_operator.inl.

69  {
70  return m * v;
71  }
const GLdouble * m
Definition: glew.h:8385
const GLdouble * v
Definition: glew.h:1377
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::mul ( detail::tmat4x4< T > const &  m,
detail::tvec4< T > const &  v 
)

Definition at line 75 of file verbose_operator.inl.

79  {
80  return m * v;
81  }
const GLdouble * m
Definition: glew.h:8385
const GLdouble * v
Definition: glew.h:1377
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::mul ( detail::tvec2< T > const &  v,
detail::tmat2x2< T > const &  m 
)

Definition at line 85 of file verbose_operator.inl.

89  {
90  return v * m;
91  }
const GLdouble * m
Definition: glew.h:8385
const GLdouble * v
Definition: glew.h:1377
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::mul ( detail::tvec3< T > const &  v,
detail::tmat3x3< T > const &  m 
)

Definition at line 95 of file verbose_operator.inl.

99  {
100  return v * m;
101  }
const GLdouble * m
Definition: glew.h:8385
const GLdouble * v
Definition: glew.h:1377
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::mul ( detail::tvec4< T > const &  v,
detail::tmat4x4< T > const &  m 
)

Definition at line 105 of file verbose_operator.inl.

109  {
110  return v * m;
111  }
const GLdouble * m
Definition: glew.h:8385
const GLdouble * v
Definition: glew.h:1377
GLM_FUNC_QUALIFIER float glm::next_float ( float const &  x)

Definition at line 205 of file ulp.inl.

References GLM_NEXT_AFTER_FLT, and max().

206  {
208  }
#define GLM_NEXT_AFTER_FLT(x, toward)
Definition: ulp.inl:199
GLM_FUNC_DECL genType max(genType const &x, genType const &y)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER double glm::next_float ( double const &  x)

Definition at line 210 of file ulp.inl.

References GLM_NEXT_AFTER_DBL, and max().

211  {
213  }
#define GLM_NEXT_AFTER_DBL(x, toward)
Definition: ulp.inl:200
GLM_FUNC_DECL genType max(genType const &x, genType const &y)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType<T> glm::next_float ( vecType< T > const &  x)

Definition at line 216 of file ulp.inl.

References next_float().

217  {
218  vecType<T> Result;
219  for(std::size_t i = 0; i < Result.length(); ++i)
220  Result[i] = next_float(x[i]);
221  return Result;
222  }
GLM_FUNC_QUALIFIER vecType< T > next_float(vecType< T > const &x, vecType< uint > const &ulps)
Definition: ulp.inl:253
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
unsigned int size_t
template<typename T >
GLM_FUNC_QUALIFIER T glm::next_float ( T const &  x,
uint const &  ulps 
)

Definition at line 244 of file ulp.inl.

References next_float(), and T.

245  {
246  T temp = x;
247  for(std::size_t i = 0; i < ulps; ++i)
248  temp = next_float(temp);
249  return temp;
250  }
GLM_FUNC_QUALIFIER vecType< T > next_float(vecType< T > const &x, vecType< uint > const &ulps)
Definition: ulp.inl:253
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
unsigned int size_t
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType<T> glm::next_float ( vecType< T > const &  x,
vecType< uint > const &  ulps 
)

Definition at line 253 of file ulp.inl.

References next_float().

254  {
255  vecType<T> Result;
256  for(std::size_t i = 0; i < Result.length(); ++i)
257  Result[i] = next_float(x[i], ulps[i]);
258  return Result;
259  }
GLM_FUNC_QUALIFIER vecType< T > next_float(vecType< T > const &x, vecType< uint > const &ulps)
Definition: ulp.inl:253
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
unsigned int size_t
GLM_FUNC_QUALIFIER float glm::niceLength ( detail::fvec4SIMD const &  x)

Definition at line 559 of file simd_vec4.inl.

References niceSqrt(), and glm::detail::sse_dot_ss().

562 {
563  detail::fvec4SIMD dot0 = detail::sse_dot_ss(x.Data, x.Data);
564  detail::fvec4SIMD sqt0 = niceSqrt(dot0);
565  float Result = 0;
566  _mm_store_ss(&Result, sqt0.Data);
567  return Result;
568 }
GLM_FUNC_QUALIFIER __m128 sse_dot_ss(__m128 v1, __m128 v2)
GLM_FUNC_QUALIFIER detail::fvec4SIMD niceSqrt(detail::fvec4SIMD const &x)
Definition: simd_vec4.inl:699
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::niceLength4 ( detail::fvec4SIMD const &  x)

Definition at line 587 of file simd_vec4.inl.

References dot4(), and niceSqrt().

590 {
591  return niceSqrt(dot4(x, x));
592 }
GLM_FUNC_QUALIFIER detail::fvec4SIMD dot4(detail::fvec4SIMD const &x, detail::fvec4SIMD const &y)
Definition: simd_vec4.inl:626
GLM_FUNC_QUALIFIER detail::fvec4SIMD niceSqrt(detail::fvec4SIMD const &x)
Definition: simd_vec4.inl:699
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::niceSqrt ( detail::fvec4SIMD const &  x)

Definition at line 699 of file simd_vec4.inl.

Referenced by niceLength(), and niceLength4().

700 {
701  return _mm_sqrt_ps(x.Data);
702 }
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER T glm::noise1 ( T const &  x)

Definition at line 32 of file func_noise.inl.

References noise1(), and T.

33  {
34  return noise1(glm::detail::tvec2<T>(x, T(0)));
35  }
GLM_FUNC_QUALIFIER T noise1(detail::tvec4< T > const &v)
Definition: func_noise.inl:197
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER T glm::noise1 ( glm::detail::tvec2< T > const &  v)

Definition at line 65 of file func_noise.inl.

References abs(), dot(), floor(), fract(), max(), mod(), permute(), T, glm::detail::tvec4< T >::w, glm::detail::tvec2< T >::x, glm::detail::tvec3< T >::x, glm::detail::tvec4< T >::x, glm::detail::tvec2< T >::y, glm::detail::tvec3< T >::y, glm::detail::tvec4< T >::y, glm::detail::tvec3< T >::z, and glm::detail::tvec4< T >::z.

66  {
67  detail::tvec4<T> const C = detail::tvec4<T>(
68  T( 0.211324865405187), // (3.0 - sqrt(3.0)) / 6.0
69  T( 0.366025403784439), // 0.5 * (sqrt(3.0) - 1.0)
70  T(-0.577350269189626), // -1.0 + 2.0 * C.x
71  T( 0.024390243902439)); // 1.0 / 41.0
72 
73  // First corner
74  detail::tvec2<T> i = floor(v + dot(v, detail::tvec2<T>(C[1])));
75  detail::tvec2<T> x0 = v - i + dot(i, detail::tvec2<T>(C[0]));
76 
77  // Other corners
78  //i1.x = step( x0.y, x0.x ); // x0.x > x0.y ? 1.0 : 0.0
79  //i1.y = 1.0 - i1.x;
80  detail::tvec2<T> i1 = (x0.x > x0.y) ? detail::tvec2<T>(1, 0) : detail::tvec2<T>(0, 1);
81  // x0 = x0 - 0.0 + 0.0 * C.xx ;
82  // x1 = x0 - i1 + 1.0 * C.xx ;
83  // x2 = x0 - 1.0 + 2.0 * C.xx ;
84  detail::tvec4<T> x12 = detail::tvec4<T>(x0.x, x0.y, x0.x, x0.y) + detail::tvec4<T>(C.x, C.x, C.z, C.z);
85  x12 = detail::tvec4<T>(detail::tvec2<T>(x12) - i1, x12.z, x12.w);
86 
87  // Permutations
88  i = mod(i, T(289)); // Avoid truncation effects in permutation
89  detail::tvec3<T> p = permute(
90  permute(i.y + detail::tvec3<T>(T(0), i1.y, T(1)))
91  + i.x + detail::tvec3<T>(T(0), i1.x, T(1)));
92 
93  detail::tvec3<T> m = max(T(0.5) - detail::tvec3<T>(
94  dot(x0, x0),
95  dot(detail::tvec2<T>(x12.x, x12.y), detail::tvec2<T>(x12.x, x12.y)),
96  dot(detail::tvec2<T>(x12.z, x12.w), detail::tvec2<T>(x12.z, x12.w))), T(0));
97  m = m * m ;
98  m = m * m ;
99 
100  // Gradients: 41 points uniformly over a line, mapped onto a diamond.
101  // The ring size 17*17 = 289 is close to a multiple of 41 (41*7 = 287)
102 
103  detail::tvec3<T> x = T(2) * fract(p * C.w) - T(1);
104  detail::tvec3<T> h = abs(x) - T(0.5);
105  detail::tvec3<T> ox = floor(x + T(0.5));
106  detail::tvec3<T> a0 = x - ox;
107 
108  // Normalise gradients implicitly by scaling m
109  // Inlined for speed: m *= taylorInvSqrt( a0*a0 + h*h );
110  m *= T(1.79284291400159) - T(0.85373472095314) * (a0 * a0 + h * h);
111 
112  // Compute final noise value at P
113  detail::tvec3<T> g;
114  g.x = a0.x * x0.x + h.x * x0.y;
115  //g.yz = a0.yz * x12.xz + h.yz * x12.yw;
116  g.y = a0.y * x12.x + h.y * x12.y;
117  g.z = a0.z * x12.z + h.z * x12.w;
118  return T(130) * dot(m, g);
119  }
GLboolean GLboolean g
Definition: glew.h:8736
GLM_FUNC_DECL genType mod(genType const &x, genType const &y)
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLM_FUNC_QUALIFIER T permute(T const &x)
Definition: noise.inl:43
const GLdouble * m
Definition: glew.h:8385
GLM_FUNC_DECL genType fract(genType const &x)
GLM_FUNC_DECL genType floor(genType const &x)
GLM_FUNC_DECL genType abs(genType const &x)
GLfloat GLfloat p
Definition: glew.h:14938
GLfloat GLfloat GLfloat GLfloat h
Definition: glew.h:7294
GLuint GLfloat x0
Definition: glew.h:11582
GLM_FUNC_DECL genType max(genType const &x, genType const &y)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER T glm::noise1 ( detail::tvec3< T > const &  v)

Definition at line 122 of file func_noise.inl.

References abs(), dot(), floor(), max(), min(), mod289(), permute(), step(), T, taylorInvSqrt(), glm::detail::tvec4< T >::w, glm::detail::tvec2< T >::x, glm::detail::tvec3< T >::x, glm::detail::tvec4< T >::x, glm::detail::tvec2< T >::y, glm::detail::tvec3< T >::y, glm::detail::tvec4< T >::y, glm::detail::tvec3< T >::z, and glm::detail::tvec4< T >::z.

123  {
124  detail::tvec2<T> const C(1.0 / 6.0, 1.0 / 3.0);
125  detail::tvec4<T> const D(0.0, 0.5, 1.0, 2.0);
126 
127  // First corner
128  detail::tvec3<T> i(floor(v + dot(v, detail::tvec3<T>(C.y))));
129  detail::tvec3<T> x0(v - i + dot(i, detail::tvec3<T>(C.x)));
130 
131  // Other corners
132  detail::tvec3<T> g(step(detail::tvec3<T>(x0.y, x0.z, x0.x), x0));
133  detail::tvec3<T> l(T(1) - g);
134  detail::tvec3<T> i1(min(g, detail::tvec3<T>(l.z, l.x, l.y)));
135  detail::tvec3<T> i2(max(g, detail::tvec3<T>(l.z, l.x, l.y)));
136 
137  // x0 = x0 - 0.0 + 0.0 * C.xxx;
138  // x1 = x0 - i1 + 1.0 * C.xxx;
139  // x2 = x0 - i2 + 2.0 * C.xxx;
140  // x3 = x0 - 1.0 + 3.0 * C.xxx;
141  detail::tvec3<T> x1(x0 - i1 + C.x);
142  detail::tvec3<T> x2(x0 - i2 + C.y); // 2.0*C.x = 1/3 = C.y
143  detail::tvec3<T> x3(x0 - D.y); // -1.0+3.0*C.x = -0.5 = -D.y
144 
145  // Permutations
146  i = mod289(i);
147  detail::tvec4<T> p(permute(permute(permute(
148  i.z + detail::tvec4<T>(T(0), i1.z, i2.z, T(1))) +
149  i.y + detail::tvec4<T>(T(0), i1.y, i2.y, T(1))) +
150  i.x + detail::tvec4<T>(T(0), i1.x, i2.x, T(1))));
151 
152  // Gradients: 7x7 points over a square, mapped onto an octahedron.
153  // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294)
154  T n_ = T(0.142857142857); // 1.0/7.0
155  detail::tvec3<T> ns(n_ * detail::tvec3<T>(D.w, D.y, D.z) - detail::tvec3<T>(D.x, D.z, D.x));
156 
157  detail::tvec4<T> j(p - T(49) * floor(p * ns.z * ns.z)); // mod(p,7*7)
158 
159  detail::tvec4<T> x_(floor(j * ns.z));
160  detail::tvec4<T> y_(floor(j - T(7) * x_)); // mod(j,N)
161 
162  detail::tvec4<T> x(x_ * ns.x + ns.y);
163  detail::tvec4<T> y(y_ * ns.x + ns.y);
164  detail::tvec4<T> h(T(1) - abs(x) - abs(y));
165 
166  detail::tvec4<T> b0(x.x, x.y, y.x, y.y);
167  detail::tvec4<T> b1(x.z, x.w, y.z, y.w);
168 
169  // vec4 s0 = vec4(lessThan(b0,0.0))*2.0 - 1.0;
170  // vec4 s1 = vec4(lessThan(b1,0.0))*2.0 - 1.0;
171  detail::tvec4<T> s0(floor(b0) * T(2) + T(1));
172  detail::tvec4<T> s1(floor(b1) * T(2) + T(1));
173  detail::tvec4<T> sh(-step(h, detail::tvec4<T>(0.0)));
174 
175  detail::tvec4<T> a0 = detail::tvec4<T>(b0.x, b0.z, b0.y, b0.w) + detail::tvec4<T>(s0.x, s0.z, s0.y, s0.w) * detail::tvec4<T>(sh.x, sh.x, sh.y, sh.y);
176  detail::tvec4<T> a1 = detail::tvec4<T>(b1.x, b1.z, b1.y, b1.w) + detail::tvec4<T>(s1.x, s1.z, s1.y, s1.w) * detail::tvec4<T>(sh.z, sh.z, sh.w, sh.w);
177 
178  detail::tvec3<T> p0(a0.x, a0.y, h.x);
179  detail::tvec3<T> p1(a0.z, a0.w, h.y);
180  detail::tvec3<T> p2(a1.x, a1.y, h.z);
181  detail::tvec3<T> p3(a1.z, a1.w, h.w);
182 
183  // Normalise gradients
184  detail::tvec4<T> norm = taylorInvSqrt(detail::tvec4<T>(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3)));
185  p0 *= norm.x;
186  p1 *= norm.y;
187  p2 *= norm.z;
188  p3 *= norm.w;
189 
190  // Mix final noise value
191  detail::tvec4<T> m = max(T(0.6) - detail::tvec4<T>(dot(x0, x0), dot(x1, x1), dot(x2, x2), dot(x3, x3)), T(0));
192  m = m * m;
193  return T(42) * dot(m * m, detail::tvec4<T>(dot(p0, x0), dot(p1, x1), dot(p2, x2), dot(p3, x3)));
194  }
GLM_FUNC_DECL genType min(genType const &x, genType const &y)
GLboolean GLboolean g
Definition: glew.h:8736
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLM_FUNC_QUALIFIER T permute(T const &x)
Definition: noise.inl:43
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat s1
Definition: glew.h:11582
GLdouble l
Definition: glew.h:8383
GLM_FUNC_DECL genType step(genType const &edge, genType const &x)
const GLdouble * m
Definition: glew.h:8385
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat s0
Definition: glew.h:11582
GLuint GLfloat GLfloat GLfloat x1
Definition: glew.h:11582
GLM_FUNC_DECL genType floor(genType const &x)
GLM_FUNC_DECL genType abs(genType const &x)
GLfloat GLfloat p
Definition: glew.h:14938
const GLdouble * v
Definition: glew.h:1377
GLfloat GLfloat GLfloat GLfloat h
Definition: glew.h:7294
GLM_FUNC_QUALIFIER T taylorInvSqrt(T const &r)
Definition: noise.inl:55
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLuint GLfloat x0
Definition: glew.h:11582
GLM_FUNC_DECL genType max(genType const &x, genType const &y)
GLM_FUNC_QUALIFIER T mod289(T const &x)
Definition: noise.inl:37
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER T glm::noise1 ( detail::tvec4< T > const &  v)

Definition at line 197 of file func_noise.inl.

References clamp(), dot(), floor(), grad4(), max(), mod(), permute(), step(), T, taylorInvSqrt(), glm::detail::tvec4< T >::w, glm::detail::tvec3< T >::x, glm::detail::tvec4< T >::x, glm::detail::tvec3< T >::y, glm::detail::tvec4< T >::y, glm::detail::tvec3< T >::z, and glm::detail::tvec4< T >::z.

198  {
199  detail::tvec4<T> const C(
200  0.138196601125011, // (5 - sqrt(5))/20 G4
201  0.276393202250021, // 2 * G4
202  0.414589803375032, // 3 * G4
203  -0.447213595499958); // -1 + 4 * G4
204 
205  // (sqrt(5) - 1)/4 = F4, used once below
206  T const F4 = T(0.309016994374947451);
207 
208  // First corner
209  detail::tvec4<T> i = floor(v + dot(v, vec4(F4)));
210  detail::tvec4<T> x0 = v - i + dot(i, vec4(C.x));
211 
212  // Other corners
213 
214  // Rank sorting originally contributed by Bill Licea-Kane, AMD (formerly ATI)
215  detail::tvec4<T> i0;
216  detail::tvec3<T> isX = step(detail::tvec3<T>(x0.y, x0.z, x0.w), detail::tvec3<T>(x0.x));
217  detail::tvec3<T> isYZ = step(detail::tvec3<T>(x0.z, x0.w, x0.w), detail::tvec3<T>(x0.y, x0.y, x0.z));
218  // i0.x = dot(isX, vec3(1.0));
219  //i0.x = isX.x + isX.y + isX.z;
220  //i0.yzw = T(1) - isX;
221  i0 = detail::tvec4<T>(isX.x + isX.y + isX.z, T(1) - isX);
222  // i0.y += dot(isYZ.xy, vec2(1.0));
223  i0.y += isYZ.x + isYZ.y;
224  //i0.zw += 1.0 - detail::tvec2<T>(isYZ.x, isYZ.y);
225  i0.z += T(1) - isYZ.x;
226  i0.w += T(1) - isYZ.y;
227  i0.z += isYZ.z;
228  i0.w += T(1) - isYZ.z;
229 
230  // i0 now contains the unique values 0,1,2,3 in each channel
231  detail::tvec4<T> i3 = clamp(i0, 0.0, 1.0);
232  detail::tvec4<T> i2 = clamp(i0 - 1.0, 0.0, 1.0);
233  detail::tvec4<T> i1 = clamp(i0 - 2.0, 0.0, 1.0);
234 
235  // x0 = x0 - 0.0 + 0.0 * C.xxxx
236  // x1 = x0 - i1 + 0.0 * C.xxxx
237  // x2 = x0 - i2 + 0.0 * C.xxxx
238  // x3 = x0 - i3 + 0.0 * C.xxxx
239  // x4 = x0 - 1.0 + 4.0 * C.xxxx
240  detail::tvec4<T> x1 = x0 - i1 + C.x;
241  detail::tvec4<T> x2 = x0 - i2 + C.y;
242  detail::tvec4<T> x3 = x0 - i3 + C.z;
243  detail::tvec4<T> x4 = x0 + C.w;
244 
245  // Permutations
246  i = mod(i, T(289));
247  T j0 = permute(permute(permute(permute(i.w) + i.z) + i.y) + i.x);
248  detail::tvec4<T> j1 = permute(permute(permute(permute(
249  i.w + detail::tvec4<T>(i1.w, i2.w, i3.w, T(1)))
250  + i.z + detail::tvec4<T>(i1.z, i2.z, i3.z, T(1)))
251  + i.y + detail::tvec4<T>(i1.y, i2.y, i3.y, T(1)))
252  + i.x + detail::tvec4<T>(i1.x, i2.x, i3.x, T(1)));
253 
254  // Gradients: 7x7x6 points over a cube, mapped onto a 4-cross polytope
255  // 7*7*6 = 294, which is close to the ring size 17*17 = 289.
256  detail::tvec4<T> ip = detail::tvec4<T>(T(1) / T(294), T(1) / T(49), T(1) / T(7), T(0));
257 
258  detail::tvec4<T> p0 = grad4(j0, ip);
259  detail::tvec4<T> p1 = grad4(j1.x, ip);
260  detail::tvec4<T> p2 = grad4(j1.y, ip);
261  detail::tvec4<T> p3 = grad4(j1.z, ip);
262  detail::tvec4<T> p4 = grad4(j1.w, ip);
263 
264  // Normalise gradients
265  detail::tvec4<T> norm = taylorInvSqrt(detail::tvec4<T>(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3)));
266  p0 *= norm.x;
267  p1 *= norm.y;
268  p2 *= norm.z;
269  p3 *= norm.w;
270  p4 *= taylorInvSqrt(dot(p4, p4));
271 
272  // Mix contributions from the five corners
273  detail::tvec3<T> m0 = max(T(0.6) - detail::tvec3<T>(dot(x0, x0), dot(x1, x1), dot(x2, x2)), T(0));
274  detail::tvec2<T> m1 = max(T(0.6) - detail::tvec2<T>(dot(x3, x3), dot(x4, x4) ), T(0));
275  m0 = m0 * m0;
276  m1 = m1 * m1;
277  return T(49) *
278  (dot(m0 * m0, detail::tvec3<T>(dot(p0, x0), dot(p1, x1), dot(p2, x2))) +
279  dot(m1 * m1, detail::tvec2<T>(dot(p3, x3), dot(p4, x4))));
280  }
GLenum clamp
Definition: glew.h:3611
GLM_FUNC_DECL genType mod(genType const &x, genType const &y)
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLM_FUNC_QUALIFIER T permute(T const &x)
Definition: noise.inl:43
GLM_FUNC_DECL genType step(genType const &edge, genType const &x)
GLuint GLfloat GLfloat GLfloat x1
Definition: glew.h:11582
GLM_FUNC_DECL genType floor(genType const &x)
const GLdouble * v
Definition: glew.h:1377
GLM_FUNC_QUALIFIER detail::tvec4< T > grad4(T const &j, detail::tvec4< T > const &ip)
Definition: noise.inl:73
GLM_FUNC_QUALIFIER T taylorInvSqrt(T const &r)
Definition: noise.inl:55
GLuint GLfloat x0
Definition: glew.h:11582
GLM_FUNC_DECL genType max(genType const &x, genType const &y)
mediump_vec4 vec4
Definition: type.hpp:114
template<typename T >
GLM_FUNC_QUALIFIER glm::detail::tvec2<T> glm::noise2 ( T const &  x)

Definition at line 38 of file func_noise.inl.

References noise1(), and T.

39  {
40  return glm::detail::tvec2<T>(
41  noise1(x + T(0.0)),
42  noise1(x + T(1.0)));
43  }
GLM_FUNC_QUALIFIER T noise1(detail::tvec4< T > const &v)
Definition: func_noise.inl:197
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER glm::detail::tvec2<T> glm::noise2 ( glm::detail::tvec2< T > const &  x)

Definition at line 283 of file func_noise.inl.

References noise1().

284  {
285  return glm::detail::tvec2<T>(
286  noise1(x + glm::detail::tvec2<T>(0.0)),
287  noise1(glm::detail::tvec2<T>(0.0) - x));
288  }
GLM_FUNC_QUALIFIER T noise1(detail::tvec4< T > const &v)
Definition: func_noise.inl:197
template<typename T >
GLM_FUNC_QUALIFIER glm::detail::tvec2<T> glm::noise2 ( glm::detail::tvec3< T > const &  x)

Definition at line 291 of file func_noise.inl.

References noise1().

292  {
293  return glm::detail::tvec2<T>(
294  noise1(x + glm::detail::tvec3<T>(0.0)),
295  noise1(glm::detail::tvec3<T>(0.0) - x));
296  }
GLM_FUNC_QUALIFIER T noise1(detail::tvec4< T > const &v)
Definition: func_noise.inl:197
template<typename T >
GLM_FUNC_QUALIFIER glm::detail::tvec2<T> glm::noise2 ( glm::detail::tvec4< T > const &  x)

Definition at line 299 of file func_noise.inl.

References noise1().

300  {
301  return glm::detail::tvec2<T>(
302  noise1(x + glm::detail::tvec4<T>(0.0)),
303  noise1(glm::detail::tvec4<T>(0.0) - x));
304  }
GLM_FUNC_QUALIFIER T noise1(detail::tvec4< T > const &v)
Definition: func_noise.inl:197
template<typename T >
GLM_FUNC_QUALIFIER glm::detail::tvec3<T> glm::noise3 ( T const &  x)

Definition at line 46 of file func_noise.inl.

References noise1(), and T.

47  {
48  return glm::detail::tvec3<T>(
49  noise1(x - T(1.0)),
50  noise1(x + T(0.0)),
51  noise1(x + T(1.0)));
52  }
GLM_FUNC_QUALIFIER T noise1(detail::tvec4< T > const &v)
Definition: func_noise.inl:197
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER glm::detail::tvec3<T> glm::noise3 ( glm::detail::tvec2< T > const &  x)

Definition at line 307 of file func_noise.inl.

References noise1().

308  {
309  return glm::detail::tvec3<T>(
310  noise1(x - glm::detail::tvec2<T>(1.0)),
311  noise1(x + glm::detail::tvec2<T>(0.0)),
312  noise1(x + glm::detail::tvec2<T>(1.0)));
313  }
GLM_FUNC_QUALIFIER T noise1(detail::tvec4< T > const &v)
Definition: func_noise.inl:197
template<typename T >
GLM_FUNC_QUALIFIER glm::detail::tvec3<T> glm::noise3 ( glm::detail::tvec3< T > const &  x)

Definition at line 316 of file func_noise.inl.

References noise1().

317  {
318  return glm::detail::tvec3<T>(
319  noise1(x - glm::detail::tvec3<T>(1.0)),
320  noise1(x + glm::detail::tvec3<T>(0.0)),
321  noise1(x + glm::detail::tvec3<T>(1.0)));
322  }
GLM_FUNC_QUALIFIER T noise1(detail::tvec4< T > const &v)
Definition: func_noise.inl:197
template<typename T >
GLM_FUNC_QUALIFIER glm::detail::tvec3<T> glm::noise3 ( glm::detail::tvec4< T > const &  x)

Definition at line 325 of file func_noise.inl.

References noise1().

326  {
327  return glm::detail::tvec3<T>(
328  noise1(x - glm::detail::tvec4<T>(1.0)),
329  noise1(x + glm::detail::tvec4<T>(0.0)),
330  noise1(x + glm::detail::tvec4<T>(1.0)));
331  }
GLM_FUNC_QUALIFIER T noise1(detail::tvec4< T > const &v)
Definition: func_noise.inl:197
template<typename T >
GLM_FUNC_QUALIFIER glm::detail::tvec4<T> glm::noise4 ( T const &  x)

Definition at line 55 of file func_noise.inl.

References noise1(), and T.

56  {
57  return glm::detail::tvec4<T>(
58  noise1(x - T(1.0)),
59  noise1(x + T(0.0)),
60  noise1(x + T(1.0)),
61  noise1(x + T(2.0)));
62  }
GLM_FUNC_QUALIFIER T noise1(detail::tvec4< T > const &v)
Definition: func_noise.inl:197
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER glm::detail::tvec4<T> glm::noise4 ( glm::detail::tvec2< T > const &  x)

Definition at line 334 of file func_noise.inl.

References noise1().

335  {
336  return glm::detail::tvec4<T>(
337  noise1(x - glm::detail::tvec2<T>(1.0)),
338  noise1(x + glm::detail::tvec2<T>(0.0)),
339  noise1(x + glm::detail::tvec2<T>(1.0)),
340  noise1(x + glm::detail::tvec2<T>(2.0)));
341  }
GLM_FUNC_QUALIFIER T noise1(detail::tvec4< T > const &v)
Definition: func_noise.inl:197
template<typename T >
GLM_FUNC_QUALIFIER glm::detail::tvec4<T> glm::noise4 ( glm::detail::tvec3< T > const &  x)

Definition at line 345 of file func_noise.inl.

References noise1().

346  {
347  return glm::detail::tvec4<T>(
348  noise1(x - glm::detail::tvec3<T>(1.0)),
349  noise1(x + glm::detail::tvec3<T>(0.0)),
350  noise1(x + glm::detail::tvec3<T>(1.0)),
351  noise1(x + glm::detail::tvec3<T>(2.0)));
352  }
GLM_FUNC_QUALIFIER T noise1(detail::tvec4< T > const &v)
Definition: func_noise.inl:197
template<typename T >
GLM_FUNC_QUALIFIER glm::detail::tvec4<T> glm::noise4 ( glm::detail::tvec4< T > const &  x)

Definition at line 355 of file func_noise.inl.

References noise1().

356  {
357  return glm::detail::tvec4<T>(
358  noise1(x - glm::detail::tvec4<T>(1.0)),
359  noise1(x + glm::detail::tvec4<T>(0.0)),
360  noise1(x + glm::detail::tvec4<T>(1.0)),
361  noise1(x + glm::detail::tvec4<T>(2.0)));
362  }
GLM_FUNC_QUALIFIER T noise1(detail::tvec4< T > const &v)
Definition: func_noise.inl:197
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::normalize ( detail::tvec2< T > const &  x)

Definition at line 225 of file func_geometric.inl.

References GLM_STATIC_ASSERT, inversesqrt(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

228  {
229  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'normalize' only accept floating-point inputs");
230 
231  typename detail::tvec2<T>::value_type sqr = x.x * x.x + x.y * x.y;
232  return x * inversesqrt(sqr);
233  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLM_FUNC_DECL genType inversesqrt(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::normalize ( detail::tvec3< T > const &  x)

Definition at line 237 of file func_geometric.inl.

References GLM_STATIC_ASSERT, inversesqrt(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

240  {
241  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'normalize' only accept floating-point inputs");
242 
243  typename detail::tvec3<T>::value_type sqr = x.x * x.x + x.y * x.y + x.z * x.z;
244  return x * inversesqrt(sqr);
245  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLM_FUNC_DECL genType inversesqrt(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::normalize ( detail::tvec4< T > const &  x)

Definition at line 249 of file func_geometric.inl.

References GLM_STATIC_ASSERT, inversesqrt(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

252  {
253  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'normalize' only accept floating-point inputs");
254 
255  typename detail::tvec4<T>::value_type sqr = x.x * x.x + x.y * x.y + x.z * x.z + x.w * x.w;
256  return x * inversesqrt(sqr);
257  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLM_FUNC_DECL genType inversesqrt(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::normalize ( detail::fvec4SIMD const &  x)

Definition at line 644 of file simd_vec4.inl.

References inversesqrt(), and glm::detail::sse_dot_ps().

647 {
648  __m128 dot0 = detail::sse_dot_ps(x.Data, x.Data);
649  __m128 isr0 = inversesqrt(detail::fvec4SIMD(dot0)).Data;
650  __m128 mul0 = _mm_mul_ps(x.Data, isr0);
651  return mul0;
652 }
GLM_FUNC_QUALIFIER detail::fvec4SIMD inversesqrt(detail::fvec4SIMD const &x)
Definition: simd_vec4.inl:711
GLM_FUNC_QUALIFIER __m128 sse_dot_ps(__m128 v1, __m128 v2)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER valType glm::normalizeDot ( detail::tvec2< valType > const &  x,
detail::tvec2< valType > const &  y 
)

Definition at line 27 of file normalize_dot.inl.

References dot(), and inversesqrt().

31  {
32  return
33  glm::dot(x, y) *
35  glm::dot(y, y));
36  }
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLM_FUNC_DECL genType inversesqrt(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER valType glm::normalizeDot ( detail::tvec3< valType > const &  x,
detail::tvec3< valType > const &  y 
)

Definition at line 40 of file normalize_dot.inl.

References dot(), and inversesqrt().

44  {
45  return
46  glm::dot(x, y) *
48  glm::dot(y, y));
49  }
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLM_FUNC_DECL genType inversesqrt(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER valType glm::normalizeDot ( detail::tvec4< valType > const &  x,
detail::tvec4< valType > const &  y 
)

Definition at line 53 of file normalize_dot.inl.

References dot(), and inversesqrt().

57  {
58  return
59  glm::dot(x, y) *
61  glm::dot(y, y));
62  }
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLM_FUNC_DECL genType inversesqrt(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType<T>::bool_type glm::notEqual ( vecType< T > const &  x,
vecType< T > const &  y 
)

Definition at line 127 of file func_vector_relational.inl.

References GLM_STATIC_ASSERT.

131  {
132  GLM_STATIC_ASSERT(detail::is_vector<vecType<T> >::_YES,
133  "Invalid template instantiation of 'notEqual', GLM vector types required");
134  assert(x.length() == y.length());
135 
136  typename vecType<bool>::bool_type Result(vecType<bool>::null);
137  for(typename vecType<bool>::size_type i = 0; i < x.length(); ++i)
138  Result[i] = x[i] != y[i];
139  return Result;
140  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tmat2x2<valType> glm::orientate2 ( valType const &  angle)

Definition at line 190 of file euler_angles.inl.

References cos(), and sin().

193  {
194  valType c = glm::cos(angle);
195  valType s = glm::sin(angle);
196 
197  detail::tmat2x2<valType> Result;
198  Result[0][0] = c;
199  Result[0][1] = s;
200  Result[1][0] = -s;
201  Result[1][1] = c;
202  return Result;
203  }
const GLfloat * c
Definition: glew.h:14913
GLdouble s
Definition: glew.h:1376
GLM_FUNC_DECL genType cos(genType const &angle)
GLM_FUNC_DECL genType sin(genType const &angle)
GLdouble angle
Definition: glew.h:8396
template<typename valType >
GLM_FUNC_QUALIFIER detail::tmat3x3<valType> glm::orientate3 ( valType const &  angle)

Definition at line 207 of file euler_angles.inl.

References cos(), and sin().

210  {
211  valType c = glm::cos(angle);
212  valType s = glm::sin(angle);
213 
214  detail::tmat3x3<valType> Result;
215  Result[0][0] = c;
216  Result[0][1] = s;
217  Result[0][2] = 0.0f;
218  Result[1][0] = -s;
219  Result[1][1] = c;
220  Result[1][2] = 0.0f;
221  Result[2][0] = 0.0f;
222  Result[2][1] = 0.0f;
223  Result[2][2] = 1.0f;
224  return Result;
225  }
const GLfloat * c
Definition: glew.h:14913
GLdouble s
Definition: glew.h:1376
GLM_FUNC_DECL genType cos(genType const &angle)
GLM_FUNC_DECL genType sin(genType const &angle)
GLdouble angle
Definition: glew.h:8396
template<typename valType >
GLM_FUNC_QUALIFIER detail::tmat3x3<valType> glm::orientate3 ( detail::tvec3< valType > const &  angles)

Definition at line 229 of file euler_angles.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, yawPitchRoll(), and glm::detail::tvec3< T >::z.

232  {
233  return detail::tmat3x3<valType>(yawPitchRoll(angles.x, angles.y, angles.z));
234  }
GLM_FUNC_QUALIFIER detail::tmat4x4< valType > yawPitchRoll(valType const &yaw, valType const &pitch, valType const &roll)
template<typename valType >
GLM_FUNC_QUALIFIER detail::tmat4x4<valType> glm::orientate4 ( detail::tvec3< valType > const &  angles)

Definition at line 238 of file euler_angles.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, yawPitchRoll(), and glm::detail::tvec3< T >::z.

241  {
242  return yawPitchRoll(angles.z, angles.x, angles.y);
243  }
GLM_FUNC_QUALIFIER detail::tmat4x4< valType > yawPitchRoll(valType const &yaw, valType const &pitch, valType const &roll)
template<typename valType >
GLM_FUNC_QUALIFIER valType glm::orientedAngle ( detail::tvec2< valType > const &  x,
detail::tvec2< valType > const &  y 
)
Todo:
epsilon is hard coded to 0.01

Definition at line 25 of file vector_angle.inl.

References acos(), all(), degrees(), dot(), epsilonEqual(), and rotate().

29  {
30 #ifdef GLM_FORCE_RADIANS
31  valType const Angle(acos(dot(x, y)));
32 #else
33  valType const Angle(glm::degrees(acos(dot(x, y))));
34 #endif
35  detail::tvec2<valType> const TransformedVector(glm::rotate(x, Angle));
36  if(all(epsilonEqual(y, TransformedVector, valType(0.01))))
37  return Angle;
38  else
39  return -Angle;
40  }
detail::tmat4x4< T > rotate(detail::tmat4x4< T > const &m, T const &angle, detail::tvec3< T > const &axis)
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLM_FUNC_DECL genType degrees(genType const &radians)
genType::boolType epsilonEqual(genType const &x, genType const &y, typename genType::value_type const &epsilon)
GLM_FUNC_DECL bool all(vecType< bool > const &v)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLM_FUNC_DECL genType acos(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER valType glm::orientedAngle ( detail::tvec3< valType > const &  x,
detail::tvec3< valType > const &  y,
detail::tvec3< valType > const &  ref 
)

Definition at line 44 of file vector_angle.inl.

References acos(), cross(), degrees(), and dot().

49  {
50  valType const Angle(glm::degrees(glm::acos(glm::dot(x, y))));
51 
52  if(glm::dot(ref, glm::cross(x, y)) < valType(0))
53  return -Angle;
54  else
55  return Angle;
56  }
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLM_FUNC_DECL genType degrees(genType const &radians)
GLenum GLint ref
Definition: glew.h:1831
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLM_FUNC_DECL genType acos(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_DECL detail::tvec3< valType > cross(detail::tvec3< valType > const &x, detail::tvec3< valType > const &y)
template<typename valType >
GLM_FUNC_QUALIFIER detail::tmat4x4<valType> glm::ortho ( valType const &  left,
valType const &  right,
valType const &  bottom,
valType const &  top,
valType const &  zNear,
valType const &  zFar 
)

Definition at line 173 of file matrix_transform.inl.

181  {
182  detail::tmat4x4<valType> Result(1);
183  Result[0][0] = valType(2) / (right - left);
184  Result[1][1] = valType(2) / (top - bottom);
185  Result[2][2] = - valType(2) / (zFar - zNear);
186  Result[3][0] = - (right + left) / (right - left);
187  Result[3][1] = - (top + bottom) / (top - bottom);
188  Result[3][2] = - (zFar + zNear) / (zFar - zNear);
189  return Result;
190  }
GLfloat GLfloat GLfloat top
Definition: glew.h:13816
GLfloat right
Definition: glew.h:13816
GLint GLint bottom
Definition: glew.h:7291
GLfloat GLfloat GLfloat GLfloat zNear
Definition: glew.h:13816
GLdouble zFar
Definition: glew.h:11541
GLint left
Definition: glew.h:7291
template<typename valType >
GLM_FUNC_QUALIFIER detail::tmat4x4<valType> glm::ortho ( valType const &  left,
valType const &  right,
valType const &  bottom,
valType const &  top 
)

Definition at line 193 of file matrix_transform.inl.

198  {
199  detail::tmat4x4<valType> Result(1);
200  Result[0][0] = valType(2) / (right - left);
201  Result[1][1] = valType(2) / (top - bottom);
202  Result[2][2] = - valType(1);
203  Result[3][0] = - (right + left) / (right - left);
204  Result[3][1] = - (top + bottom) / (top - bottom);
205  return Result;
206  }
GLfloat GLfloat GLfloat top
Definition: glew.h:13816
GLfloat right
Definition: glew.h:13816
GLint GLint bottom
Definition: glew.h:7291
GLint left
Definition: glew.h:7291
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat2x2<T> glm::outerProduct ( detail::tvec2< T > const &  c,
detail::tvec2< T > const &  r 
)

Definition at line 50 of file func_matrix.inl.

References GLM_STATIC_ASSERT.

54  {
55  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'outerProduct' only accept floating-point inputs");
56 
57  detail::tmat2x2<T> m(detail::tmat2x2<T>::null);
58  m[0][0] = c[0] * r[0];
59  m[0][1] = c[1] * r[0];
60  m[1][0] = c[0] * r[1];
61  m[1][1] = c[1] * r[1];
62  return m;
63  }
const GLfloat * c
Definition: glew.h:14913
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
GLdouble GLdouble GLdouble r
Definition: glew.h:1392
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat3x3<T> glm::outerProduct ( detail::tvec3< T > const &  c,
detail::tvec3< T > const &  r 
)

Definition at line 67 of file func_matrix.inl.

References GLM_STATIC_ASSERT, and glm::detail::tmat3x3< T >::length().

71  {
72  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'outerProduct' only accept floating-point inputs");
73 
74  detail::tmat3x3<T> m(detail::tmat3x3<T>::null);
75  for(typename detail::tmat3x3<T>::size_type i(0); i < m.length(); ++i)
76  m[i] = c * r[i];
77  return m;
78  }
const GLfloat * c
Definition: glew.h:14913
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
GLdouble GLdouble GLdouble r
Definition: glew.h:1392
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat4x4<T> glm::outerProduct ( detail::tvec4< T > const &  c,
detail::tvec4< T > const &  r 
)

Definition at line 82 of file func_matrix.inl.

References GLM_STATIC_ASSERT, and glm::detail::tmat4x4< T >::length().

86  {
87  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'outerProduct' only accept floating-point inputs");
88 
89  detail::tmat4x4<T> m(detail::tmat4x4<T>::null);
90  for(typename detail::tmat4x4<T>::size_type i(0); i < m.length(); ++i)
91  m[i] = c * r[i];
92  return m;
93  }
const GLfloat * c
Definition: glew.h:14913
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
GLdouble GLdouble GLdouble r
Definition: glew.h:1392
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat2x3<T> glm::outerProduct ( detail::tvec3< T > const &  c,
detail::tvec2< T > const &  r 
)

Definition at line 97 of file func_matrix.inl.

References GLM_STATIC_ASSERT, glm::detail::tvec2< T >::x, glm::detail::tvec3< T >::x, glm::detail::tvec2< T >::y, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

101  {
102  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'outerProduct' only accept floating-point inputs");
103 
104  detail::tmat2x3<T> m(detail::tmat2x3<T>::null);
105  m[0][0] = c.x * r.x;
106  m[0][1] = c.y * r.x;
107  m[0][2] = c.z * r.x;
108  m[1][0] = c.x * r.y;
109  m[1][1] = c.y * r.y;
110  m[1][2] = c.z * r.y;
111  return m;
112  }
const GLfloat * c
Definition: glew.h:14913
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
GLdouble GLdouble GLdouble r
Definition: glew.h:1392
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat3x2<T> glm::outerProduct ( detail::tvec2< T > const &  c,
detail::tvec3< T > const &  r 
)

Definition at line 116 of file func_matrix.inl.

References GLM_STATIC_ASSERT, glm::detail::tvec2< T >::x, glm::detail::tvec3< T >::x, glm::detail::tvec2< T >::y, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

120  {
121  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'outerProduct' only accept floating-point inputs");
122 
123  detail::tmat3x2<T> m(detail::tmat3x2<T>::null);
124  m[0][0] = c.x * r.x;
125  m[0][1] = c.y * r.x;
126  m[1][0] = c.x * r.y;
127  m[1][1] = c.y * r.y;
128  m[2][0] = c.x * r.z;
129  m[2][1] = c.y * r.z;
130  return m;
131  }
const GLfloat * c
Definition: glew.h:14913
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
GLdouble GLdouble GLdouble r
Definition: glew.h:1392
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat2x4<T> glm::outerProduct ( detail::tvec4< T > const &  c,
detail::tvec2< T > const &  r 
)

Definition at line 135 of file func_matrix.inl.

References GLM_STATIC_ASSERT, glm::detail::tvec4< T >::w, glm::detail::tvec2< T >::x, glm::detail::tvec4< T >::x, glm::detail::tvec2< T >::y, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

139  {
140  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'outerProduct' only accept floating-point inputs");
141 
142  detail::tmat2x4<T> m(detail::tmat2x4<T>::null);
143  m[0][0] = c.x * r.x;
144  m[0][1] = c.y * r.x;
145  m[0][2] = c.z * r.x;
146  m[0][3] = c.w * r.x;
147  m[1][0] = c.x * r.y;
148  m[1][1] = c.y * r.y;
149  m[1][2] = c.z * r.y;
150  m[1][3] = c.w * r.y;
151  return m;
152  }
const GLfloat * c
Definition: glew.h:14913
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
GLdouble GLdouble GLdouble r
Definition: glew.h:1392
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat4x2<T> glm::outerProduct ( detail::tvec2< T > const &  c,
detail::tvec4< T > const &  r 
)

Definition at line 156 of file func_matrix.inl.

References GLM_STATIC_ASSERT, glm::detail::tvec4< T >::w, glm::detail::tvec2< T >::x, glm::detail::tvec4< T >::x, glm::detail::tvec2< T >::y, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

160  {
161  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'outerProduct' only accept floating-point inputs");
162 
163  detail::tmat4x2<T> m(detail::tmat4x2<T>::null);
164  m[0][0] = c.x * r.x;
165  m[0][1] = c.y * r.x;
166  m[1][0] = c.x * r.y;
167  m[1][1] = c.y * r.y;
168  m[2][0] = c.x * r.z;
169  m[2][1] = c.y * r.z;
170  m[3][0] = c.x * r.w;
171  m[3][1] = c.y * r.w;
172  return m;
173  }
const GLfloat * c
Definition: glew.h:14913
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
GLdouble GLdouble GLdouble r
Definition: glew.h:1392
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat3x4<T> glm::outerProduct ( detail::tvec4< T > const &  c,
detail::tvec3< T > const &  r 
)

Definition at line 177 of file func_matrix.inl.

References GLM_STATIC_ASSERT, glm::detail::tvec4< T >::w, glm::detail::tvec3< T >::x, glm::detail::tvec4< T >::x, glm::detail::tvec3< T >::y, glm::detail::tvec4< T >::y, glm::detail::tvec3< T >::z, and glm::detail::tvec4< T >::z.

181  {
182  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'outerProduct' only accept floating-point inputs");
183 
184  detail::tmat3x4<T> m(detail::tmat3x4<T>::null);
185  m[0][0] = c.x * r.x;
186  m[0][1] = c.y * r.x;
187  m[0][2] = c.z * r.x;
188  m[0][3] = c.w * r.x;
189  m[1][0] = c.x * r.y;
190  m[1][1] = c.y * r.y;
191  m[1][2] = c.z * r.y;
192  m[1][3] = c.w * r.y;
193  m[2][0] = c.x * r.z;
194  m[2][1] = c.y * r.z;
195  m[2][2] = c.z * r.z;
196  m[2][3] = c.w * r.z;
197  return m;
198  }
const GLfloat * c
Definition: glew.h:14913
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
GLdouble GLdouble GLdouble r
Definition: glew.h:1392
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat4x3<T> glm::outerProduct ( detail::tvec3< T > const &  c,
detail::tvec4< T > const &  r 
)

Definition at line 202 of file func_matrix.inl.

References GLM_STATIC_ASSERT, glm::detail::tvec4< T >::w, glm::detail::tvec3< T >::x, glm::detail::tvec4< T >::x, glm::detail::tvec3< T >::y, glm::detail::tvec4< T >::y, glm::detail::tvec3< T >::z, and glm::detail::tvec4< T >::z.

206  {
207  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'outerProduct' only accept floating-point inputs");
208 
209  detail::tmat4x3<T> m(detail::tmat4x3<T>::null);
210  m[0][0] = c.x * r.x;
211  m[0][1] = c.y * r.x;
212  m[0][2] = c.z * r.x;
213  m[1][0] = c.x * r.y;
214  m[1][1] = c.y * r.y;
215  m[1][2] = c.z * r.y;
216  m[2][0] = c.x * r.z;
217  m[2][1] = c.y * r.z;
218  m[2][2] = c.z * r.z;
219  m[3][0] = c.x * r.w;
220  m[3][1] = c.y * r.w;
221  m[3][2] = c.z * r.w;
222  return m;
223  }
const GLfloat * c
Definition: glew.h:14913
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
GLdouble GLdouble GLdouble r
Definition: glew.h:1392
GLM_FUNC_QUALIFIER detail::fmat4x4SIMD glm::outerProduct ( detail::fvec4SIMD const &  c,
detail::fvec4SIMD const &  r 
)

Definition at line 551 of file simd_mat4.inl.

555 {
556  __m128 Shu0 = _mm_shuffle_ps(r.Data, r.Data, _MM_SHUFFLE(0, 0, 0, 0));
557  __m128 Shu1 = _mm_shuffle_ps(r.Data, r.Data, _MM_SHUFFLE(1, 1, 1, 1));
558  __m128 Shu2 = _mm_shuffle_ps(r.Data, r.Data, _MM_SHUFFLE(2, 2, 2, 2));
559  __m128 Shu3 = _mm_shuffle_ps(r.Data, r.Data, _MM_SHUFFLE(3, 3, 3, 3));
560 
561  detail::fmat4x4SIMD result(detail::fmat4x4SIMD::null);
562  result[0].Data = _mm_mul_ps(c.Data, Shu0);
563  result[1].Data = _mm_mul_ps(c.Data, Shu1);
564  result[2].Data = _mm_mul_ps(c.Data, Shu2);
565  result[3].Data = _mm_mul_ps(c.Data, Shu3);
566  return result;
567 }
const GLfloat * c
Definition: glew.h:14913
GLuint64EXT * result
Definition: glew.h:12708
GLdouble GLdouble GLdouble r
Definition: glew.h:1392
GLM_FUNC_QUALIFIER uint glm::packHalf2x16 ( detail::tvec2< float > const &  v)

Definition at line 177 of file func_packing.inl.

References glm::detail::toFloat16(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

178  {
179  union helper
180  {
181  uint other;
182  struct
183  {
184  detail::hdata a, b;
185  } orig;
186  } Pack;
187 
188  Pack.orig.a = detail::toFloat16(v.x);
189  Pack.orig.b = detail::toFloat16(v.y);
190  return Pack.other;
191  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
uint_t uint
Definition: type_int.hpp:131
short hdata
Definition: type_half.hpp:37
const GLdouble * v
Definition: glew.h:1377
GLM_FUNC_DECL hdata toFloat16(float const &value)
Definition: type_half.inl:122
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
template<typename T >
GLM_FUNC_QUALIFIER T glm::perlin ( detail::tvec2< T > const &  P)

Definition at line 84 of file noise.inl.

References abs(), dot(), fade(), floor(), fract(), mix(), mod(), permute(), T, taylorInvSqrt(), glm::detail::tvec4< T >::w, glm::detail::tvec2< T >::x, glm::detail::tvec4< T >::x, glm::detail::tvec2< T >::y, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

85  {
86  detail::tvec4<T> Pi = glm::floor(detail::tvec4<T>(P.x, P.y, P.x, P.y)) + detail::tvec4<T>(0.0, 0.0, 1.0, 1.0);
87  detail::tvec4<T> Pf = glm::fract(detail::tvec4<T>(P.x, P.y, P.x, P.y)) - detail::tvec4<T>(0.0, 0.0, 1.0, 1.0);
88  Pi = mod(Pi, T(289)); // To avoid truncation effects in permutation
89  detail::tvec4<T> ix(Pi.x, Pi.z, Pi.x, Pi.z);
90  detail::tvec4<T> iy(Pi.y, Pi.y, Pi.w, Pi.w);
91  detail::tvec4<T> fx(Pf.x, Pf.z, Pf.x, Pf.z);
92  detail::tvec4<T> fy(Pf.y, Pf.y, Pf.w, Pf.w);
93 
94  detail::tvec4<T> i = glm::permute(glm::permute(ix) + iy);
95 
96  detail::tvec4<T> gx = T(2) * glm::fract(i / T(41)) - T(1);
97  detail::tvec4<T> gy = glm::abs(gx) - T(0.5);
98  detail::tvec4<T> tx = glm::floor(gx + T(0.5));
99  gx = gx - tx;
100 
101  detail::tvec2<T> g00(gx.x, gy.x);
102  detail::tvec2<T> g10(gx.y, gy.y);
103  detail::tvec2<T> g01(gx.z, gy.z);
104  detail::tvec2<T> g11(gx.w, gy.w);
105 
106  detail::tvec4<T> norm = taylorInvSqrt(detail::tvec4<T>(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11)));
107  g00 *= norm.x;
108  g01 *= norm.y;
109  g10 *= norm.z;
110  g11 *= norm.w;
111 
112  T n00 = dot(g00, detail::tvec2<T>(fx.x, fy.x));
113  T n10 = dot(g10, detail::tvec2<T>(fx.y, fy.y));
114  T n01 = dot(g01, detail::tvec2<T>(fx.z, fy.z));
115  T n11 = dot(g11, detail::tvec2<T>(fx.w, fy.w));
116 
117  detail::tvec2<T> fade_xy = fade(detail::tvec2<T>(Pf.x, Pf.y));
118  detail::tvec2<T> n_x = mix(detail::tvec2<T>(n00, n01), detail::tvec2<T>(n10, n11), fade_xy.x);
119  T n_xy = mix(n_x.x, n_x.y, fade_xy.y);
120  return T(2.3) * n_xy;
121  }
GLM_FUNC_DECL genType mod(genType const &x, genType const &y)
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLM_FUNC_QUALIFIER vecType< T > taylorInvSqrt(vecType< T > const &r)
Definition: noise.inl:61
GLM_FUNC_QUALIFIER T permute(T const &x)
Definition: noise.inl:43
GLM_FUNC_DECL genType fract(genType const &x)
GLM_FUNC_DECL genType floor(genType const &x)
GLM_FUNC_DECL genType abs(genType const &x)
GLM_FUNC_QUALIFIER vecType< T > fade(vecType< T > const &t)
Definition: noise.inl:67
GLM_FUNC_DECL genTypeT mix(genTypeT const &x, genTypeT const &y, genTypeU const &a)
template<typename T >
GLM_FUNC_QUALIFIER T glm::perlin ( detail::tvec3< T > const &  P)

Definition at line 125 of file noise.inl.

References abs(), dot(), fade(), floor(), fract(), mix(), mod289(), permute(), step(), T, taylorInvSqrt(), glm::detail::tvec4< T >::w, glm::detail::tvec2< T >::x, glm::detail::tvec3< T >::x, glm::detail::tvec4< T >::x, glm::detail::tvec2< T >::y, glm::detail::tvec3< T >::y, glm::detail::tvec4< T >::y, glm::detail::tvec3< T >::z, and glm::detail::tvec4< T >::z.

126  {
127  detail::tvec3<T> Pi0 = floor(P); // Integer part for indexing
128  detail::tvec3<T> Pi1 = Pi0 + T(1); // Integer part + 1
129  Pi0 = mod289(Pi0);
130  Pi1 = mod289(Pi1);
131  detail::tvec3<T> Pf0 = fract(P); // Fractional part for interpolation
132  detail::tvec3<T> Pf1 = Pf0 - T(1); // Fractional part - 1.0
133  detail::tvec4<T> ix(Pi0.x, Pi1.x, Pi0.x, Pi1.x);
134  detail::tvec4<T> iy = detail::tvec4<T>(detail::tvec2<T>(Pi0.y), detail::tvec2<T>(Pi1.y));
135  detail::tvec4<T> iz0(Pi0.z);
136  detail::tvec4<T> iz1(Pi1.z);
137 
138  detail::tvec4<T> ixy = permute(permute(ix) + iy);
139  detail::tvec4<T> ixy0 = permute(ixy + iz0);
140  detail::tvec4<T> ixy1 = permute(ixy + iz1);
141 
142  detail::tvec4<T> gx0 = ixy0 * T(1.0 / 7.0);
143  detail::tvec4<T> gy0 = fract(floor(gx0) * T(1.0 / 7.0)) - T(0.5);
144  gx0 = fract(gx0);
145  detail::tvec4<T> gz0 = detail::tvec4<T>(0.5) - abs(gx0) - abs(gy0);
146  detail::tvec4<T> sz0 = step(gz0, detail::tvec4<T>(0.0));
147  gx0 -= sz0 * (step(T(0), gx0) - T(0.5));
148  gy0 -= sz0 * (step(T(0), gy0) - T(0.5));
149 
150  detail::tvec4<T> gx1 = ixy1 * T(1.0 / 7.0);
151  detail::tvec4<T> gy1 = fract(floor(gx1) * T(1.0 / 7.0)) - T(0.5);
152  gx1 = fract(gx1);
153  detail::tvec4<T> gz1 = detail::tvec4<T>(0.5) - abs(gx1) - abs(gy1);
154  detail::tvec4<T> sz1 = step(gz1, detail::tvec4<T>(0.0));
155  gx1 -= sz1 * (step(T(0), gx1) - T(0.5));
156  gy1 -= sz1 * (step(T(0), gy1) - T(0.5));
157 
158  detail::tvec3<T> g000(gx0.x, gy0.x, gz0.x);
159  detail::tvec3<T> g100(gx0.y, gy0.y, gz0.y);
160  detail::tvec3<T> g010(gx0.z, gy0.z, gz0.z);
161  detail::tvec3<T> g110(gx0.w, gy0.w, gz0.w);
162  detail::tvec3<T> g001(gx1.x, gy1.x, gz1.x);
163  detail::tvec3<T> g101(gx1.y, gy1.y, gz1.y);
164  detail::tvec3<T> g011(gx1.z, gy1.z, gz1.z);
165  detail::tvec3<T> g111(gx1.w, gy1.w, gz1.w);
166 
167  detail::tvec4<T> norm0 = taylorInvSqrt(detail::tvec4<T>(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));
168  g000 *= norm0.x;
169  g010 *= norm0.y;
170  g100 *= norm0.z;
171  g110 *= norm0.w;
172  detail::tvec4<T> norm1 = taylorInvSqrt(detail::tvec4<T>(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));
173  g001 *= norm1.x;
174  g011 *= norm1.y;
175  g101 *= norm1.z;
176  g111 *= norm1.w;
177 
178  T n000 = dot(g000, Pf0);
179  T n100 = dot(g100, detail::tvec3<T>(Pf1.x, Pf0.y, Pf0.z));
180  T n010 = dot(g010, detail::tvec3<T>(Pf0.x, Pf1.y, Pf0.z));
181  T n110 = dot(g110, detail::tvec3<T>(Pf1.x, Pf1.y, Pf0.z));
182  T n001 = dot(g001, detail::tvec3<T>(Pf0.x, Pf0.y, Pf1.z));
183  T n101 = dot(g101, detail::tvec3<T>(Pf1.x, Pf0.y, Pf1.z));
184  T n011 = dot(g011, detail::tvec3<T>(Pf0.x, Pf1.y, Pf1.z));
185  T n111 = dot(g111, Pf1);
186 
187  detail::tvec3<T> fade_xyz = fade(Pf0);
188  detail::tvec4<T> n_z = mix(detail::tvec4<T>(n000, n100, n010, n110), detail::tvec4<T>(n001, n101, n011, n111), fade_xyz.z);
189  detail::tvec2<T> n_yz = mix(detail::tvec2<T>(n_z.x, n_z.y), detail::tvec2<T>(n_z.z, n_z.w), fade_xyz.y);
190  T n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
191  return T(2.2) * n_xyz;
192  }
GLM_FUNC_QUALIFIER vecType< T > permute(vecType< T > const &x)
Definition: noise.inl:49
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLM_FUNC_QUALIFIER vecType< T > taylorInvSqrt(vecType< T > const &r)
Definition: noise.inl:61
GLM_FUNC_DECL genType step(genType const &edge, genType const &x)
GLM_FUNC_DECL genType fract(genType const &x)
GLM_FUNC_DECL genType floor(genType const &x)
GLM_FUNC_DECL genType abs(genType const &x)
GLM_FUNC_QUALIFIER vecType< T > fade(vecType< T > const &t)
Definition: noise.inl:67
GLM_FUNC_QUALIFIER T mod289(T const &x)
Definition: noise.inl:37
GLM_FUNC_DECL genTypeT mix(genTypeT const &x, genTypeT const &y, genTypeU const &a)
template<typename T >
GLM_FUNC_QUALIFIER T glm::perlin ( detail::tvec4< T > const &  P)

Definition at line 269 of file noise.inl.

References abs(), dot(), fade(), floor(), fract(), mix(), mod(), permute(), step(), T, taylorInvSqrt(), glm::detail::tvec4< T >::w, glm::detail::tvec2< T >::x, glm::detail::tvec4< T >::x, glm::detail::tvec2< T >::y, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

270  {
271  detail::tvec4<T> Pi0 = floor(P); // Integer part for indexing
272  detail::tvec4<T> Pi1 = Pi0 + T(1); // Integer part + 1
273  Pi0 = mod(Pi0, T(289));
274  Pi1 = mod(Pi1, T(289));
275  detail::tvec4<T> Pf0 = fract(P); // Fractional part for interpolation
276  detail::tvec4<T> Pf1 = Pf0 - T(1); // Fractional part - 1.0
277  detail::tvec4<T> ix(Pi0.x, Pi1.x, Pi0.x, Pi1.x);
278  detail::tvec4<T> iy(Pi0.y, Pi0.y, Pi1.y, Pi1.y);
279  detail::tvec4<T> iz0(Pi0.z);
280  detail::tvec4<T> iz1(Pi1.z);
281  detail::tvec4<T> iw0(Pi0.w);
282  detail::tvec4<T> iw1(Pi1.w);
283 
284  detail::tvec4<T> ixy = permute(permute(ix) + iy);
285  detail::tvec4<T> ixy0 = permute(ixy + iz0);
286  detail::tvec4<T> ixy1 = permute(ixy + iz1);
287  detail::tvec4<T> ixy00 = permute(ixy0 + iw0);
288  detail::tvec4<T> ixy01 = permute(ixy0 + iw1);
289  detail::tvec4<T> ixy10 = permute(ixy1 + iw0);
290  detail::tvec4<T> ixy11 = permute(ixy1 + iw1);
291 
292  detail::tvec4<T> gx00 = ixy00 / T(7);
293  detail::tvec4<T> gy00 = floor(gx00) / T(7);
294  detail::tvec4<T> gz00 = floor(gy00) / T(6);
295  gx00 = fract(gx00) - T(0.5);
296  gy00 = fract(gy00) - T(0.5);
297  gz00 = fract(gz00) - T(0.5);
298  detail::tvec4<T> gw00 = detail::tvec4<T>(0.75) - abs(gx00) - abs(gy00) - abs(gz00);
299  detail::tvec4<T> sw00 = step(gw00, detail::tvec4<T>(0.0));
300  gx00 -= sw00 * (step(T(0), gx00) - T(0.5));
301  gy00 -= sw00 * (step(T(0), gy00) - T(0.5));
302 
303  detail::tvec4<T> gx01 = ixy01 / T(7);
304  detail::tvec4<T> gy01 = floor(gx01) / T(7);
305  detail::tvec4<T> gz01 = floor(gy01) / T(6);
306  gx01 = fract(gx01) - T(0.5);
307  gy01 = fract(gy01) - T(0.5);
308  gz01 = fract(gz01) - T(0.5);
309  detail::tvec4<T> gw01 = detail::tvec4<T>(0.75) - abs(gx01) - abs(gy01) - abs(gz01);
310  detail::tvec4<T> sw01 = step(gw01, detail::tvec4<T>(0.0));
311  gx01 -= sw01 * (step(T(0), gx01) - T(0.5));
312  gy01 -= sw01 * (step(T(0), gy01) - T(0.5));
313 
314  detail::tvec4<T> gx10 = ixy10 / T(7);
315  detail::tvec4<T> gy10 = floor(gx10) / T(7);
316  detail::tvec4<T> gz10 = floor(gy10) / T(6);
317  gx10 = fract(gx10) - T(0.5);
318  gy10 = fract(gy10) - T(0.5);
319  gz10 = fract(gz10) - T(0.5);
320  detail::tvec4<T> gw10 = detail::tvec4<T>(0.75) - abs(gx10) - abs(gy10) - abs(gz10);
321  detail::tvec4<T> sw10 = step(gw10, detail::tvec4<T>(0));
322  gx10 -= sw10 * (step(T(0), gx10) - T(0.5));
323  gy10 -= sw10 * (step(T(0), gy10) - T(0.5));
324 
325  detail::tvec4<T> gx11 = ixy11 / T(7);
326  detail::tvec4<T> gy11 = floor(gx11) / T(7);
327  detail::tvec4<T> gz11 = floor(gy11) / T(6);
328  gx11 = fract(gx11) - T(0.5);
329  gy11 = fract(gy11) - T(0.5);
330  gz11 = fract(gz11) - T(0.5);
331  detail::tvec4<T> gw11 = detail::tvec4<T>(0.75) - abs(gx11) - abs(gy11) - abs(gz11);
332  detail::tvec4<T> sw11 = step(gw11, detail::tvec4<T>(0.0));
333  gx11 -= sw11 * (step(T(0), gx11) - T(0.5));
334  gy11 -= sw11 * (step(T(0), gy11) - T(0.5));
335 
336  detail::tvec4<T> g0000(gx00.x, gy00.x, gz00.x, gw00.x);
337  detail::tvec4<T> g1000(gx00.y, gy00.y, gz00.y, gw00.y);
338  detail::tvec4<T> g0100(gx00.z, gy00.z, gz00.z, gw00.z);
339  detail::tvec4<T> g1100(gx00.w, gy00.w, gz00.w, gw00.w);
340  detail::tvec4<T> g0010(gx10.x, gy10.x, gz10.x, gw10.x);
341  detail::tvec4<T> g1010(gx10.y, gy10.y, gz10.y, gw10.y);
342  detail::tvec4<T> g0110(gx10.z, gy10.z, gz10.z, gw10.z);
343  detail::tvec4<T> g1110(gx10.w, gy10.w, gz10.w, gw10.w);
344  detail::tvec4<T> g0001(gx01.x, gy01.x, gz01.x, gw01.x);
345  detail::tvec4<T> g1001(gx01.y, gy01.y, gz01.y, gw01.y);
346  detail::tvec4<T> g0101(gx01.z, gy01.z, gz01.z, gw01.z);
347  detail::tvec4<T> g1101(gx01.w, gy01.w, gz01.w, gw01.w);
348  detail::tvec4<T> g0011(gx11.x, gy11.x, gz11.x, gw11.x);
349  detail::tvec4<T> g1011(gx11.y, gy11.y, gz11.y, gw11.y);
350  detail::tvec4<T> g0111(gx11.z, gy11.z, gz11.z, gw11.z);
351  detail::tvec4<T> g1111(gx11.w, gy11.w, gz11.w, gw11.w);
352 
353  detail::tvec4<T> norm00 = taylorInvSqrt(detail::tvec4<T>(dot(g0000, g0000), dot(g0100, g0100), dot(g1000, g1000), dot(g1100, g1100)));
354  g0000 *= norm00.x;
355  g0100 *= norm00.y;
356  g1000 *= norm00.z;
357  g1100 *= norm00.w;
358 
359  detail::tvec4<T> norm01 = taylorInvSqrt(detail::tvec4<T>(dot(g0001, g0001), dot(g0101, g0101), dot(g1001, g1001), dot(g1101, g1101)));
360  g0001 *= norm01.x;
361  g0101 *= norm01.y;
362  g1001 *= norm01.z;
363  g1101 *= norm01.w;
364 
365  detail::tvec4<T> norm10 = taylorInvSqrt(detail::tvec4<T>(dot(g0010, g0010), dot(g0110, g0110), dot(g1010, g1010), dot(g1110, g1110)));
366  g0010 *= norm10.x;
367  g0110 *= norm10.y;
368  g1010 *= norm10.z;
369  g1110 *= norm10.w;
370 
371  detail::tvec4<T> norm11 = taylorInvSqrt(detail::tvec4<T>(dot(g0011, g0011), dot(g0111, g0111), dot(g1011, g1011), dot(g1111, g1111)));
372  g0011 *= norm11.x;
373  g0111 *= norm11.y;
374  g1011 *= norm11.z;
375  g1111 *= norm11.w;
376 
377  T n0000 = dot(g0000, Pf0);
378  T n1000 = dot(g1000, detail::tvec4<T>(Pf1.x, Pf0.y, Pf0.z, Pf0.w));
379  T n0100 = dot(g0100, detail::tvec4<T>(Pf0.x, Pf1.y, Pf0.z, Pf0.w));
380  T n1100 = dot(g1100, detail::tvec4<T>(Pf1.x, Pf1.y, Pf0.z, Pf0.w));
381  T n0010 = dot(g0010, detail::tvec4<T>(Pf0.x, Pf0.y, Pf1.z, Pf0.w));
382  T n1010 = dot(g1010, detail::tvec4<T>(Pf1.x, Pf0.y, Pf1.z, Pf0.w));
383  T n0110 = dot(g0110, detail::tvec4<T>(Pf0.x, Pf1.y, Pf1.z, Pf0.w));
384  T n1110 = dot(g1110, detail::tvec4<T>(Pf1.x, Pf1.y, Pf1.z, Pf0.w));
385  T n0001 = dot(g0001, detail::tvec4<T>(Pf0.x, Pf0.y, Pf0.z, Pf1.w));
386  T n1001 = dot(g1001, detail::tvec4<T>(Pf1.x, Pf0.y, Pf0.z, Pf1.w));
387  T n0101 = dot(g0101, detail::tvec4<T>(Pf0.x, Pf1.y, Pf0.z, Pf1.w));
388  T n1101 = dot(g1101, detail::tvec4<T>(Pf1.x, Pf1.y, Pf0.z, Pf1.w));
389  T n0011 = dot(g0011, detail::tvec4<T>(Pf0.x, Pf0.y, Pf1.z, Pf1.w));
390  T n1011 = dot(g1011, detail::tvec4<T>(Pf1.x, Pf0.y, Pf1.z, Pf1.w));
391  T n0111 = dot(g0111, detail::tvec4<T>(Pf0.x, Pf1.y, Pf1.z, Pf1.w));
392  T n1111 = dot(g1111, Pf1);
393 
394  detail::tvec4<T> fade_xyzw = fade(Pf0);
395  detail::tvec4<T> n_0w = mix(detail::tvec4<T>(n0000, n1000, n0100, n1100), detail::tvec4<T>(n0001, n1001, n0101, n1101), fade_xyzw.w);
396  detail::tvec4<T> n_1w = mix(detail::tvec4<T>(n0010, n1010, n0110, n1110), detail::tvec4<T>(n0011, n1011, n0111, n1111), fade_xyzw.w);
397  detail::tvec4<T> n_zw = mix(n_0w, n_1w, fade_xyzw.z);
398  detail::tvec2<T> n_yzw = mix(detail::tvec2<T>(n_zw.x, n_zw.y), detail::tvec2<T>(n_zw.z, n_zw.w), fade_xyzw.y);
399  T n_xyzw = mix(n_yzw.x, n_yzw.y, fade_xyzw.x);
400  return T(2.2) * n_xyzw;
401  }
GLM_FUNC_QUALIFIER vecType< T > permute(vecType< T > const &x)
Definition: noise.inl:49
GLM_FUNC_DECL genType mod(genType const &x, genType const &y)
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLM_FUNC_QUALIFIER vecType< T > taylorInvSqrt(vecType< T > const &r)
Definition: noise.inl:61
GLM_FUNC_DECL genType step(genType const &edge, genType const &x)
GLM_FUNC_DECL genType fract(genType const &x)
GLM_FUNC_DECL genType floor(genType const &x)
GLM_FUNC_DECL genType abs(genType const &x)
GLM_FUNC_QUALIFIER vecType< T > fade(vecType< T > const &t)
Definition: noise.inl:67
GLM_FUNC_DECL genTypeT mix(genTypeT const &x, genTypeT const &y, genTypeU const &a)
template<typename T >
GLM_FUNC_QUALIFIER T glm::perlin ( detail::tvec2< T > const &  P,
detail::tvec2< T > const &  rep 
)

Definition at line 405 of file noise.inl.

References abs(), dot(), fade(), floor(), fract(), mix(), mod(), permute(), T, taylorInvSqrt(), glm::detail::tvec4< T >::w, glm::detail::tvec2< T >::x, glm::detail::tvec4< T >::x, glm::detail::tvec2< T >::y, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

406  {
407  detail::tvec4<T> Pi = floor(detail::tvec4<T>(P.x, P.y, P.x, P.y)) + detail::tvec4<T>(0.0, 0.0, 1.0, 1.0);
408  detail::tvec4<T> Pf = fract(detail::tvec4<T>(P.x, P.y, P.x, P.y)) - detail::tvec4<T>(0.0, 0.0, 1.0, 1.0);
409  Pi = mod(Pi, detail::tvec4<T>(rep.x, rep.y, rep.x, rep.y)); // To create noise with explicit period
410  Pi = mod(Pi, T(289)); // To avoid truncation effects in permutation
411  detail::tvec4<T> ix(Pi.x, Pi.z, Pi.x, Pi.z);
412  detail::tvec4<T> iy(Pi.y, Pi.y, Pi.w, Pi.w);
413  detail::tvec4<T> fx(Pf.x, Pf.z, Pf.x, Pf.z);
414  detail::tvec4<T> fy(Pf.y, Pf.y, Pf.w, Pf.w);
415 
416  detail::tvec4<T> i = permute(permute(ix) + iy);
417 
418  detail::tvec4<T> gx = T(2) * fract(i / T(41)) - T(1);
419  detail::tvec4<T> gy = abs(gx) - T(0.5);
420  detail::tvec4<T> tx = floor(gx + T(0.5));
421  gx = gx - tx;
422 
423  detail::tvec2<T> g00(gx.x, gy.x);
424  detail::tvec2<T> g10(gx.y, gy.y);
425  detail::tvec2<T> g01(gx.z, gy.z);
426  detail::tvec2<T> g11(gx.w, gy.w);
427 
428  detail::tvec4<T> norm = taylorInvSqrt(detail::tvec4<T>(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11)));
429  g00 *= norm.x;
430  g01 *= norm.y;
431  g10 *= norm.z;
432  g11 *= norm.w;
433 
434  T n00 = dot(g00, detail::tvec2<T>(fx.x, fy.x));
435  T n10 = dot(g10, detail::tvec2<T>(fx.y, fy.y));
436  T n01 = dot(g01, detail::tvec2<T>(fx.z, fy.z));
437  T n11 = dot(g11, detail::tvec2<T>(fx.w, fy.w));
438 
439  detail::tvec2<T> fade_xy = fade(detail::tvec2<T>(Pf.x, Pf.y));
440  detail::tvec2<T> n_x = mix(detail::tvec2<T>(n00, n01), detail::tvec2<T>(n10, n11), fade_xy.x);
441  T n_xy = mix(n_x.x, n_x.y, fade_xy.y);
442  return T(2.3) * n_xy;
443  }
GLM_FUNC_QUALIFIER vecType< T > permute(vecType< T > const &x)
Definition: noise.inl:49
GLM_FUNC_DECL genType mod(genType const &x, genType const &y)
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLM_FUNC_QUALIFIER vecType< T > taylorInvSqrt(vecType< T > const &r)
Definition: noise.inl:61
GLM_FUNC_DECL genType fract(genType const &x)
GLM_FUNC_DECL genType floor(genType const &x)
GLM_FUNC_DECL genType abs(genType const &x)
GLM_FUNC_QUALIFIER vecType< T > fade(vecType< T > const &t)
Definition: noise.inl:67
GLM_FUNC_DECL genTypeT mix(genTypeT const &x, genTypeT const &y, genTypeU const &a)
template<typename T >
GLM_FUNC_QUALIFIER T glm::perlin ( detail::tvec3< T > const &  P,
detail::tvec3< T > const &  rep 
)

Definition at line 447 of file noise.inl.

References abs(), dot(), fade(), floor(), fract(), mix(), mod(), permute(), step(), T, taylorInvSqrt(), glm::detail::tvec4< T >::w, glm::detail::tvec2< T >::x, glm::detail::tvec3< T >::x, glm::detail::tvec4< T >::x, glm::detail::tvec2< T >::y, glm::detail::tvec3< T >::y, glm::detail::tvec4< T >::y, glm::detail::tvec3< T >::z, and glm::detail::tvec4< T >::z.

448  {
449  detail::tvec3<T> Pi0 = mod(floor(P), rep); // Integer part, modulo period
450  detail::tvec3<T> Pi1 = mod(Pi0 + detail::tvec3<T>(1.0), rep); // Integer part + 1, mod period
451  Pi0 = mod(Pi0, T(289));
452  Pi1 = mod(Pi1, T(289));
453  detail::tvec3<T> Pf0 = fract(P); // Fractional part for interpolation
454  detail::tvec3<T> Pf1 = Pf0 - detail::tvec3<T>(1.0); // Fractional part - 1.0
455  detail::tvec4<T> ix = detail::tvec4<T>(Pi0.x, Pi1.x, Pi0.x, Pi1.x);
456  detail::tvec4<T> iy = detail::tvec4<T>(Pi0.y, Pi0.y, Pi1.y, Pi1.y);
457  detail::tvec4<T> iz0(Pi0.z);
458  detail::tvec4<T> iz1(Pi1.z);
459 
460  detail::tvec4<T> ixy = permute(permute(ix) + iy);
461  detail::tvec4<T> ixy0 = permute(ixy + iz0);
462  detail::tvec4<T> ixy1 = permute(ixy + iz1);
463 
464  detail::tvec4<T> gx0 = ixy0 / T(7);
465  detail::tvec4<T> gy0 = fract(floor(gx0) / T(7)) - T(0.5);
466  gx0 = fract(gx0);
467  detail::tvec4<T> gz0 = detail::tvec4<T>(0.5) - abs(gx0) - abs(gy0);
468  detail::tvec4<T> sz0 = step(gz0, detail::tvec4<T>(0));
469  gx0 -= sz0 * (step(0.0, gx0) - T(0.5));
470  gy0 -= sz0 * (step(0.0, gy0) - T(0.5));
471 
472  detail::tvec4<T> gx1 = ixy1 / T(7);
473  detail::tvec4<T> gy1 = fract(floor(gx1) / T(7)) - T(0.5);
474  gx1 = fract(gx1);
475  detail::tvec4<T> gz1 = detail::tvec4<T>(0.5) - abs(gx1) - abs(gy1);
476  detail::tvec4<T> sz1 = step(gz1, detail::tvec4<T>(0.0));
477  gx1 -= sz1 * (step(0.0, gx1) - T(0.5));
478  gy1 -= sz1 * (step(0.0, gy1) - T(0.5));
479 
480  detail::tvec3<T> g000 = detail::tvec3<T>(gx0.x, gy0.x, gz0.x);
481  detail::tvec3<T> g100 = detail::tvec3<T>(gx0.y, gy0.y, gz0.y);
482  detail::tvec3<T> g010 = detail::tvec3<T>(gx0.z, gy0.z, gz0.z);
483  detail::tvec3<T> g110 = detail::tvec3<T>(gx0.w, gy0.w, gz0.w);
484  detail::tvec3<T> g001 = detail::tvec3<T>(gx1.x, gy1.x, gz1.x);
485  detail::tvec3<T> g101 = detail::tvec3<T>(gx1.y, gy1.y, gz1.y);
486  detail::tvec3<T> g011 = detail::tvec3<T>(gx1.z, gy1.z, gz1.z);
487  detail::tvec3<T> g111 = detail::tvec3<T>(gx1.w, gy1.w, gz1.w);
488 
489  detail::tvec4<T> norm0 = taylorInvSqrt(detail::tvec4<T>(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));
490  g000 *= norm0.x;
491  g010 *= norm0.y;
492  g100 *= norm0.z;
493  g110 *= norm0.w;
494  detail::tvec4<T> norm1 = taylorInvSqrt(detail::tvec4<T>(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));
495  g001 *= norm1.x;
496  g011 *= norm1.y;
497  g101 *= norm1.z;
498  g111 *= norm1.w;
499 
500  T n000 = dot(g000, Pf0);
501  T n100 = dot(g100, detail::tvec3<T>(Pf1.x, Pf0.y, Pf0.z));
502  T n010 = dot(g010, detail::tvec3<T>(Pf0.x, Pf1.y, Pf0.z));
503  T n110 = dot(g110, detail::tvec3<T>(Pf1.x, Pf1.y, Pf0.z));
504  T n001 = dot(g001, detail::tvec3<T>(Pf0.x, Pf0.y, Pf1.z));
505  T n101 = dot(g101, detail::tvec3<T>(Pf1.x, Pf0.y, Pf1.z));
506  T n011 = dot(g011, detail::tvec3<T>(Pf0.x, Pf1.y, Pf1.z));
507  T n111 = dot(g111, Pf1);
508 
509  detail::tvec3<T> fade_xyz = fade(Pf0);
510  detail::tvec4<T> n_z = mix(detail::tvec4<T>(n000, n100, n010, n110), detail::tvec4<T>(n001, n101, n011, n111), fade_xyz.z);
511  detail::tvec2<T> n_yz = mix(detail::tvec2<T>(n_z.x, n_z.y), detail::tvec2<T>(n_z.z, n_z.w), fade_xyz.y);
512  T n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
513  return T(2.2) * n_xyz;
514  }
GLM_FUNC_QUALIFIER vecType< T > permute(vecType< T > const &x)
Definition: noise.inl:49
GLM_FUNC_DECL genType mod(genType const &x, genType const &y)
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLM_FUNC_QUALIFIER vecType< T > taylorInvSqrt(vecType< T > const &r)
Definition: noise.inl:61
GLM_FUNC_DECL genType step(genType const &edge, genType const &x)
GLM_FUNC_DECL genType fract(genType const &x)
GLM_FUNC_DECL genType floor(genType const &x)
GLM_FUNC_DECL genType abs(genType const &x)
GLM_FUNC_QUALIFIER vecType< T > fade(vecType< T > const &t)
Definition: noise.inl:67
GLM_FUNC_DECL genTypeT mix(genTypeT const &x, genTypeT const &y, genTypeU const &a)
template<typename T >
GLM_FUNC_QUALIFIER T glm::perlin ( detail::tvec4< T > const &  P,
detail::tvec4< T > const &  rep 
)

Definition at line 518 of file noise.inl.

References abs(), dot(), fade(), floor(), fract(), mix(), mod(), permute(), step(), T, taylorInvSqrt(), glm::detail::tvec4< T >::w, glm::detail::tvec2< T >::x, glm::detail::tvec4< T >::x, glm::detail::tvec2< T >::y, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

519  {
520  detail::tvec4<T> Pi0 = mod(floor(P), rep); // Integer part modulo rep
521  detail::tvec4<T> Pi1 = mod(Pi0 + T(1), rep); // Integer part + 1 mod rep
522  detail::tvec4<T> Pf0 = fract(P); // Fractional part for interpolation
523  detail::tvec4<T> Pf1 = Pf0 - T(1); // Fractional part - 1.0
524  detail::tvec4<T> ix = detail::tvec4<T>(Pi0.x, Pi1.x, Pi0.x, Pi1.x);
525  detail::tvec4<T> iy = detail::tvec4<T>(Pi0.y, Pi0.y, Pi1.y, Pi1.y);
526  detail::tvec4<T> iz0(Pi0.z);
527  detail::tvec4<T> iz1(Pi1.z);
528  detail::tvec4<T> iw0(Pi0.w);
529  detail::tvec4<T> iw1(Pi1.w);
530 
531  detail::tvec4<T> ixy = permute(permute(ix) + iy);
532  detail::tvec4<T> ixy0 = permute(ixy + iz0);
533  detail::tvec4<T> ixy1 = permute(ixy + iz1);
534  detail::tvec4<T> ixy00 = permute(ixy0 + iw0);
535  detail::tvec4<T> ixy01 = permute(ixy0 + iw1);
536  detail::tvec4<T> ixy10 = permute(ixy1 + iw0);
537  detail::tvec4<T> ixy11 = permute(ixy1 + iw1);
538 
539  detail::tvec4<T> gx00 = ixy00 / T(7);
540  detail::tvec4<T> gy00 = floor(gx00) / T(7);
541  detail::tvec4<T> gz00 = floor(gy00) / T(6);
542  gx00 = fract(gx00) - T(0.5);
543  gy00 = fract(gy00) - T(0.5);
544  gz00 = fract(gz00) - T(0.5);
545  detail::tvec4<T> gw00 = detail::tvec4<T>(0.75) - abs(gx00) - abs(gy00) - abs(gz00);
546  detail::tvec4<T> sw00 = step(gw00, detail::tvec4<T>(0));
547  gx00 -= sw00 * (step(0.0, gx00) - T(0.5));
548  gy00 -= sw00 * (step(0.0, gy00) - T(0.5));
549 
550  detail::tvec4<T> gx01 = ixy01 / T(7);
551  detail::tvec4<T> gy01 = floor(gx01) / T(7);
552  detail::tvec4<T> gz01 = floor(gy01) / T(6);
553  gx01 = fract(gx01) - T(0.5);
554  gy01 = fract(gy01) - T(0.5);
555  gz01 = fract(gz01) - T(0.5);
556  detail::tvec4<T> gw01 = detail::tvec4<T>(0.75) - abs(gx01) - abs(gy01) - abs(gz01);
557  detail::tvec4<T> sw01 = step(gw01, detail::tvec4<T>(0.0));
558  gx01 -= sw01 * (step(0.0, gx01) - T(0.5));
559  gy01 -= sw01 * (step(0.0, gy01) - T(0.5));
560 
561  detail::tvec4<T> gx10 = ixy10 / T(7);
562  detail::tvec4<T> gy10 = floor(gx10) / T(7);
563  detail::tvec4<T> gz10 = floor(gy10) / T(6);
564  gx10 = fract(gx10) - T(0.5);
565  gy10 = fract(gy10) - T(0.5);
566  gz10 = fract(gz10) - T(0.5);
567  detail::tvec4<T> gw10 = detail::tvec4<T>(0.75) - abs(gx10) - abs(gy10) - abs(gz10);
568  detail::tvec4<T> sw10 = step(gw10, detail::tvec4<T>(0.0));
569  gx10 -= sw10 * (step(0.0, gx10) - T(0.5));
570  gy10 -= sw10 * (step(0.0, gy10) - T(0.5));
571 
572  detail::tvec4<T> gx11 = ixy11 / T(7);
573  detail::tvec4<T> gy11 = floor(gx11) / T(7);
574  detail::tvec4<T> gz11 = floor(gy11) / T(6);
575  gx11 = fract(gx11) - T(0.5);
576  gy11 = fract(gy11) - T(0.5);
577  gz11 = fract(gz11) - T(0.5);
578  detail::tvec4<T> gw11 = detail::tvec4<T>(0.75) - abs(gx11) - abs(gy11) - abs(gz11);
579  detail::tvec4<T> sw11 = step(gw11, detail::tvec4<T>(0.0));
580  gx11 -= sw11 * (step(0.0, gx11) - T(0.5));
581  gy11 -= sw11 * (step(0.0, gy11) - T(0.5));
582 
583  detail::tvec4<T> g0000(gx00.x, gy00.x, gz00.x, gw00.x);
584  detail::tvec4<T> g1000(gx00.y, gy00.y, gz00.y, gw00.y);
585  detail::tvec4<T> g0100(gx00.z, gy00.z, gz00.z, gw00.z);
586  detail::tvec4<T> g1100(gx00.w, gy00.w, gz00.w, gw00.w);
587  detail::tvec4<T> g0010(gx10.x, gy10.x, gz10.x, gw10.x);
588  detail::tvec4<T> g1010(gx10.y, gy10.y, gz10.y, gw10.y);
589  detail::tvec4<T> g0110(gx10.z, gy10.z, gz10.z, gw10.z);
590  detail::tvec4<T> g1110(gx10.w, gy10.w, gz10.w, gw10.w);
591  detail::tvec4<T> g0001(gx01.x, gy01.x, gz01.x, gw01.x);
592  detail::tvec4<T> g1001(gx01.y, gy01.y, gz01.y, gw01.y);
593  detail::tvec4<T> g0101(gx01.z, gy01.z, gz01.z, gw01.z);
594  detail::tvec4<T> g1101(gx01.w, gy01.w, gz01.w, gw01.w);
595  detail::tvec4<T> g0011(gx11.x, gy11.x, gz11.x, gw11.x);
596  detail::tvec4<T> g1011(gx11.y, gy11.y, gz11.y, gw11.y);
597  detail::tvec4<T> g0111(gx11.z, gy11.z, gz11.z, gw11.z);
598  detail::tvec4<T> g1111(gx11.w, gy11.w, gz11.w, gw11.w);
599 
600  detail::tvec4<T> norm00 = taylorInvSqrt(detail::tvec4<T>(dot(g0000, g0000), dot(g0100, g0100), dot(g1000, g1000), dot(g1100, g1100)));
601  g0000 *= norm00.x;
602  g0100 *= norm00.y;
603  g1000 *= norm00.z;
604  g1100 *= norm00.w;
605 
606  detail::tvec4<T> norm01 = taylorInvSqrt(detail::tvec4<T>(dot(g0001, g0001), dot(g0101, g0101), dot(g1001, g1001), dot(g1101, g1101)));
607  g0001 *= norm01.x;
608  g0101 *= norm01.y;
609  g1001 *= norm01.z;
610  g1101 *= norm01.w;
611 
612  detail::tvec4<T> norm10 = taylorInvSqrt(detail::tvec4<T>(dot(g0010, g0010), dot(g0110, g0110), dot(g1010, g1010), dot(g1110, g1110)));
613  g0010 *= norm10.x;
614  g0110 *= norm10.y;
615  g1010 *= norm10.z;
616  g1110 *= norm10.w;
617 
618  detail::tvec4<T> norm11 = taylorInvSqrt(detail::tvec4<T>(dot(g0011, g0011), dot(g0111, g0111), dot(g1011, g1011), dot(g1111, g1111)));
619  g0011 *= norm11.x;
620  g0111 *= norm11.y;
621  g1011 *= norm11.z;
622  g1111 *= norm11.w;
623 
624  T n0000 = dot(g0000, Pf0);
625  T n1000 = dot(g1000, detail::tvec4<T>(Pf1.x, Pf0.y, Pf0.z, Pf0.w));
626  T n0100 = dot(g0100, detail::tvec4<T>(Pf0.x, Pf1.y, Pf0.z, Pf0.w));
627  T n1100 = dot(g1100, detail::tvec4<T>(Pf1.x, Pf1.y, Pf0.z, Pf0.w));
628  T n0010 = dot(g0010, detail::tvec4<T>(Pf0.x, Pf0.y, Pf1.z, Pf0.w));
629  T n1010 = dot(g1010, detail::tvec4<T>(Pf1.x, Pf0.y, Pf1.z, Pf0.w));
630  T n0110 = dot(g0110, detail::tvec4<T>(Pf0.x, Pf1.y, Pf1.z, Pf0.w));
631  T n1110 = dot(g1110, detail::tvec4<T>(Pf1.x, Pf1.y, Pf1.z, Pf0.w));
632  T n0001 = dot(g0001, detail::tvec4<T>(Pf0.x, Pf0.y, Pf0.z, Pf1.w));
633  T n1001 = dot(g1001, detail::tvec4<T>(Pf1.x, Pf0.y, Pf0.z, Pf1.w));
634  T n0101 = dot(g0101, detail::tvec4<T>(Pf0.x, Pf1.y, Pf0.z, Pf1.w));
635  T n1101 = dot(g1101, detail::tvec4<T>(Pf1.x, Pf1.y, Pf0.z, Pf1.w));
636  T n0011 = dot(g0011, detail::tvec4<T>(Pf0.x, Pf0.y, Pf1.z, Pf1.w));
637  T n1011 = dot(g1011, detail::tvec4<T>(Pf1.x, Pf0.y, Pf1.z, Pf1.w));
638  T n0111 = dot(g0111, detail::tvec4<T>(Pf0.x, Pf1.y, Pf1.z, Pf1.w));
639  T n1111 = dot(g1111, Pf1);
640 
641  detail::tvec4<T> fade_xyzw = fade(Pf0);
642  detail::tvec4<T> n_0w = mix(detail::tvec4<T>(n0000, n1000, n0100, n1100), detail::tvec4<T>(n0001, n1001, n0101, n1101), fade_xyzw.w);
643  detail::tvec4<T> n_1w = mix(detail::tvec4<T>(n0010, n1010, n0110, n1110), detail::tvec4<T>(n0011, n1011, n0111, n1111), fade_xyzw.w);
644  detail::tvec4<T> n_zw = mix(n_0w, n_1w, fade_xyzw.z);
645  detail::tvec2<T> n_yzw = mix(detail::tvec2<T>(n_zw.x, n_zw.y), detail::tvec2<T>(n_zw.z, n_zw.w), fade_xyzw.y);
646  T n_xyzw = mix(n_yzw.x, n_yzw.y, fade_xyzw.x);
647  return T(2.2) * n_xyzw;
648  }
GLM_FUNC_QUALIFIER vecType< T > permute(vecType< T > const &x)
Definition: noise.inl:49
GLM_FUNC_DECL genType mod(genType const &x, genType const &y)
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLM_FUNC_QUALIFIER vecType< T > taylorInvSqrt(vecType< T > const &r)
Definition: noise.inl:61
GLM_FUNC_DECL genType step(genType const &edge, genType const &x)
GLM_FUNC_DECL genType fract(genType const &x)
GLM_FUNC_DECL genType floor(genType const &x)
GLM_FUNC_DECL genType abs(genType const &x)
GLM_FUNC_QUALIFIER vecType< T > fade(vecType< T > const &t)
Definition: noise.inl:67
GLM_FUNC_DECL genTypeT mix(genTypeT const &x, genTypeT const &y, genTypeU const &a)
template<typename T >
GLM_FUNC_QUALIFIER T glm::permute ( T const &  x)

Definition at line 43 of file noise.inl.

References mod289(), and T.

Referenced by noise1(), perlin(), and simplex().

44  {
45  return mod289(((x * T(34)) + T(1)) * x);
46  }
GLM_FUNC_QUALIFIER T mod289(T const &x)
Definition: noise.inl:37
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType<T> glm::permute ( vecType< T > const &  x)

Definition at line 49 of file noise.inl.

References mod289(), and T.

50  {
51  return mod289(((x * T(34)) + T(1)) * x);
52  }
GLM_FUNC_QUALIFIER T mod289(T const &x)
Definition: noise.inl:37
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename valType >
GLM_FUNC_QUALIFIER detail::tmat4x4<valType> glm::perspective ( valType const &  fovy,
valType const &  aspect,
valType const &  zNear,
valType const &  zFar 
)

Definition at line 232 of file matrix_transform.inl.

References radians(), and tan().

238  {
239  assert(aspect != valType(0));
240  assert(zFar != zNear);
241 
242 #ifdef GLM_FORCE_RADIANS
243  valType const rad = fovy;
244 #else
245  valType const rad = glm::radians(fovy);
246 #endif
247 
248  valType tanHalfFovy = tan(rad / valType(2));
249  detail::tmat4x4<valType> Result(valType(0));
250  Result[0][0] = valType(1) / (aspect * tanHalfFovy);
251  Result[1][1] = valType(1) / (tanHalfFovy);
252  Result[2][2] = - (zFar + zNear) / (zFar - zNear);
253  Result[2][3] = - valType(1);
254  Result[3][2] = - (valType(2) * zFar * zNear) / (zFar - zNear);
255  return Result;
256  }
GLM_FUNC_DECL genType radians(genType const &degrees)
GLM_FUNC_DECL genType tan(genType const &angle)
GLfloat GLfloat GLfloat GLfloat zNear
Definition: glew.h:13816
GLdouble zFar
Definition: glew.h:11541
template<typename T >
GLM_FUNC_QUALIFIER detail::tquat<T> glm::pow ( detail::tquat< T > const &  x,
T const &  y 
)

Definition at line 96 of file quaternion.inl.

References abs(), acos(), cos(), sin(), T, glm::detail::tquat< T >::w, glm::detail::tquat< T >::x, glm::detail::tquat< T >::y, and glm::detail::tquat< T >::z.

100  {
101  if(abs(x.w) > T(0.9999))
102  return x;
103  float Angle = acos(y);
104  float NewAngle = Angle * y;
105  float Div = sin(NewAngle) / sin(Angle);
106  return detail::tquat<T>(
107  cos(NewAngle),
108  x.x * Div,
109  x.y * Div,
110  x.z * Div);
111  }
GLM_FUNC_DECL genType cos(genType const &angle)
GLM_FUNC_DECL genType sin(genType const &angle)
GLM_FUNC_DECL genType abs(genType const &x)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLM_FUNC_DECL genType acos(genType const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER float glm::prev_float ( float const &  x)

Definition at line 224 of file ulp.inl.

References GLM_NEXT_AFTER_FLT, and min().

225  {
227  }
GLM_FUNC_DECL genType min(genType const &x, genType const &y)
#define GLM_NEXT_AFTER_FLT(x, toward)
Definition: ulp.inl:199
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER double glm::prev_float ( double const &  x)

Definition at line 229 of file ulp.inl.

References GLM_NEXT_AFTER_DBL, and min().

230  {
232  }
GLM_FUNC_DECL genType min(genType const &x, genType const &y)
#define GLM_NEXT_AFTER_DBL(x, toward)
Definition: ulp.inl:200
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType<T> glm::prev_float ( vecType< T > const &  x)

Definition at line 235 of file ulp.inl.

References prev_float().

236  {
237  vecType<T> Result;
238  for(std::size_t i = 0; i < Result.length(); ++i)
239  Result[i] = prev_float(x[i]);
240  return Result;
241  }
GLM_FUNC_QUALIFIER vecType< T > prev_float(vecType< T > const &x, vecType< uint > const &ulps)
Definition: ulp.inl:271
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
unsigned int size_t
template<typename T >
GLM_FUNC_QUALIFIER T glm::prev_float ( T const &  x,
uint const &  ulps 
)

Definition at line 262 of file ulp.inl.

References prev_float(), and T.

263  {
264  T temp = x;
265  for(std::size_t i = 0; i < ulps; ++i)
266  temp = prev_float(temp);
267  return temp;
268  }
GLM_FUNC_QUALIFIER vecType< T > prev_float(vecType< T > const &x, vecType< uint > const &ulps)
Definition: ulp.inl:271
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
unsigned int size_t
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType<T> glm::prev_float ( vecType< T > const &  x,
vecType< uint > const &  ulps 
)

Definition at line 271 of file ulp.inl.

References prev_float().

272  {
273  vecType<T> Result;
274  for(std::size_t i = 0; i < Result.length(); ++i)
275  Result[i] = prev_float(x[i], ulps[i]);
276  return Result;
277  }
GLM_FUNC_QUALIFIER vecType< T > prev_float(vecType< T > const &x, vecType< uint > const &ulps)
Definition: ulp.inl:271
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
unsigned int size_t
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::reflect ( detail::fvec4SIMD const &  I,
detail::fvec4SIMD const &  N 
)

Definition at line 676 of file simd_vec4.inl.

References glm::detail::sse_rfe_ps().

680 {
681  return detail::sse_rfe_ps(I.Data, N.Data);
682 }
GLM_FUNC_QUALIFIER __m128 sse_rfe_ps(__m128 I, __m128 N)
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat3x3<T> glm::reflect2D ( const detail::tmat3x3< T > &  m,
const detail::tvec3< T > &  normal 
)

Definition at line 69 of file transform2.inl.

References glm::detail::tvec3< T >::x, and glm::detail::tvec3< T >::y.

72  {
73  detail::tmat3x3<T> r(1);
74  r[0][0] = 1 - 2 * normal.x * normal.x;
75  r[0][1] = -2 * normal.x * normal.y;
76  r[1][0] = -2 * normal.x * normal.y;
77  r[1][1] = 1 - 2 * normal.y * normal.y;
78  return m * r;
79  }
const GLdouble * m
Definition: glew.h:8385
GLdouble GLdouble GLdouble r
Definition: glew.h:1392
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat4x4<T> glm::reflect3D ( const detail::tmat4x4< T > &  m,
const detail::tvec3< T > &  normal 
)

Definition at line 82 of file transform2.inl.

References glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

85  {
86  detail::tmat4x4<T> r(1);
87  r[0][0] = 1 - 2 * normal.x * normal.x;
88  r[0][1] = -2 * normal.x * normal.y;
89  r[0][2] = -2 * normal.x * normal.z;
90 
91  r[1][0] = -2 * normal.x * normal.y;
92  r[1][1] = 1 - 2 * normal.y * normal.y;
93  r[1][2] = -2 * normal.y * normal.z;
94 
95  r[2][0] = -2 * normal.x * normal.z;
96  r[2][1] = -2 * normal.y * normal.z;
97  r[2][2] = 1 - 2 * normal.z * normal.z;
98  return m * r;
99  }
const GLdouble * m
Definition: glew.h:8385
GLdouble GLdouble GLdouble r
Definition: glew.h:1392
template<typename genType >
GLM_FUNC_QUALIFIER genType glm::refract ( genType const &  I,
genType const &  N,
genType const &  eta 
)

Definition at line 285 of file func_geometric.inl.

References dot(), and sqrt().

290  {
291  //It could be a vector
292  //GLM_STATIC_ASSERT(detail::type<genType>::is_float);
293 
294  genType dotValue = dot(N, I);
295  genType k = genType(1) - eta * eta * (genType(1) - dotValue * dotValue);
296  if(k < genType(0))
297  return genType(0);
298  else
299  return eta * I - (eta * dotValue + sqrt(k)) * N;
300  }
GLM_FUNC_QUALIFIER T dot(detail::tvec4< T > const &x, detail::tvec4< T > const &y)
GLM_FUNC_DECL genType sqrt(genType const &x)
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::refract ( detail::fvec4SIMD const &  I,
detail::fvec4SIMD const &  N,
float const &  eta 
)

Definition at line 685 of file simd_vec4.inl.

References glm::detail::sse_rfa_ps().

690 {
691  return detail::sse_rfa_ps(I.Data, N.Data, _mm_set1_ps(eta));
692 }
GLM_FUNC_QUALIFIER __m128 sse_rfa_ps(__m128 I, __m128 N, __m128 eta)
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::repeat ( detail::tvec2< T > const &  Texcoord)

Definition at line 74 of file wrap.inl.

References repeat().

77  {
78  detail::tvec2<T> Result;
79  for(typename detail::tvec2<T>::size_type i = 0; i < detail::tvec2<T>::value_size(); ++i)
80  Result[i] = repeat(Texcoord[i]);
81  return Result;
82  }
GLM_FUNC_QUALIFIER detail::tvec4< T > repeat(detail::tvec4< T > const &Texcoord)
Definition: wrap.inl:98
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::repeat ( detail::tvec3< T > const &  Texcoord)

Definition at line 86 of file wrap.inl.

References repeat().

89  {
90  detail::tvec3<T> Result;
91  for(typename detail::tvec3<T>::size_type i = 0; i < detail::tvec3<T>::value_size(); ++i)
92  Result[i] = repeat(Texcoord[i]);
93  return Result;
94  }
GLM_FUNC_QUALIFIER detail::tvec4< T > repeat(detail::tvec4< T > const &Texcoord)
Definition: wrap.inl:98
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::repeat ( detail::tvec4< T > const &  Texcoord)

Definition at line 98 of file wrap.inl.

References repeat().

101  {
102  detail::tvec4<T> Result;
103  for(typename detail::tvec4<T>::size_type i = 0; i < detail::tvec4<T>::value_size(); ++i)
104  Result[i] = repeat(Texcoord[i]);
105  return Result;
106  }
GLM_FUNC_QUALIFIER detail::tvec4< T > repeat(detail::tvec4< T > const &Texcoord)
Definition: wrap.inl:98
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::rgbColor ( const detail::tvec3< T > &  hsvColor)

Definition at line 13 of file color_space.inl.

References floor(), hsvColor(), rgbColor(), T, glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

14  {
15  detail::tvec3<T> hsv = hsvColor;
16  detail::tvec3<T> rgbColor;
17 
18  if(hsv.y == T(0))
19  // achromatic (grey)
20  rgbColor = detail::tvec3<T>(hsv.z);
21  else
22  {
23  T sector = floor(hsv.x / T(60));
24  T frac = (hsv.x / T(60)) - sector;
25  // factorial part of h
26  T o = hsv.z * (T(1) - hsv.y);
27  T p = hsv.z * (T(1) - hsv.y * frac);
28  T q = hsv.z * (T(1) - hsv.y * (T(1) - frac));
29 
30  switch(int(sector))
31  {
32  default:
33  case 0:
34  rgbColor.r = hsv.z;
35  rgbColor.g = q;
36  rgbColor.b = o;
37  break;
38  case 1:
39  rgbColor.r = p;
40  rgbColor.g = hsv.z;
41  rgbColor.b = o;
42  break;
43  case 2:
44  rgbColor.r = o;
45  rgbColor.g = hsv.z;
46  rgbColor.b = q;
47  break;
48  case 3:
49  rgbColor.r = o;
50  rgbColor.g = p;
51  rgbColor.b = hsv.z;
52  break;
53  case 4:
54  rgbColor.r = q;
55  rgbColor.g = o;
56  rgbColor.b = hsv.z;
57  break;
58  case 5:
59  rgbColor.r = hsv.z;
60  rgbColor.g = o;
61  rgbColor.b = p;
62  break;
63  }
64  }
65 
66  return rgbColor;
67  }
GLM_FUNC_QUALIFIER detail::tvec3< T > rgbColor(const detail::tvec3< T > &hsvColor)
Definition: color_space.inl:13
GLM_FUNC_DECL genType floor(genType const &x)
GLfloat GLfloat p
Definition: glew.h:14938
GLM_FUNC_QUALIFIER detail::tvec3< T > hsvColor(const detail::tvec3< T > &rgbColor)
Definition: color_space.inl:70
GLdouble GLdouble GLdouble GLdouble q
Definition: glew.h:1400
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::rotate ( detail::tquat< T > const &  q,
detail::tvec3< T > const &  v 
)

Definition at line 125 of file quaternion.inl.

129  {
130  return q * v;
131  }
const GLdouble * v
Definition: glew.h:1377
GLdouble GLdouble GLdouble GLdouble q
Definition: glew.h:1400
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::rotate ( detail::tquat< T > const &  q,
detail::tvec4< T > const &  v 
)

Definition at line 135 of file quaternion.inl.

139  {
140  return q * v;
141  }
const GLdouble * v
Definition: glew.h:1377
GLdouble GLdouble GLdouble GLdouble q
Definition: glew.h:1400
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat4x4<T> glm::rotate_slow ( detail::tmat4x4< T > const &  m,
T const &  angle,
detail::tvec3< T > const &  v 
)

Definition at line 121 of file matrix_transform.inl.

References angle(), axis(), cos(), normalize(), radians(), sin(), T, glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

126  {
127 #ifdef GLM_FORCE_RADIANS
128  T const a = angle;
129 #else
130  T const a = radians(angle);
131 #endif
132  T c = cos(a);
133  T s = sin(a);
134  detail::tmat4x4<T> Result;
135 
136  detail::tvec3<T> axis = normalize(v);
137 
138  Result[0][0] = c + (1 - c) * axis.x * axis.x;
139  Result[0][1] = (1 - c) * axis.x * axis.y + s * axis.z;
140  Result[0][2] = (1 - c) * axis.x * axis.z - s * axis.y;
141  Result[0][3] = 0;
142 
143  Result[1][0] = (1 - c) * axis.y * axis.x - s * axis.z;
144  Result[1][1] = c + (1 - c) * axis.y * axis.y;
145  Result[1][2] = (1 - c) * axis.y * axis.z + s * axis.x;
146  Result[1][3] = 0;
147 
148  Result[2][0] = (1 - c) * axis.z * axis.x + s * axis.y;
149  Result[2][1] = (1 - c) * axis.z * axis.y - s * axis.x;
150  Result[2][2] = c + (1 - c) * axis.z * axis.z;
151  Result[2][3] = 0;
152 
153  Result[3] = detail::tvec4<T>(0, 0, 0, 1);
154  return m * Result;
155  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
const GLfloat * c
Definition: glew.h:14913
GLM_FUNC_DECL genType radians(genType const &degrees)
const GLdouble * m
Definition: glew.h:8385
GLdouble s
Definition: glew.h:1376
GLM_FUNC_DECL genType cos(genType const &angle)
GLM_FUNC_DECL genType normalize(genType const &x)
GLM_FUNC_DECL genType sin(genType const &angle)
const GLdouble * v
Definition: glew.h:1377
detail::tvec3< valType > axis(detail::tquat< valType > const &x)
GLdouble angle
Definition: glew.h:8396
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::round ( detail::fvec4SIMD const &  x)

Definition at line 332 of file simd_vec4.inl.

References glm::detail::sse_rnd_ps().

335 {
336  return detail::sse_rnd_ps(x.Data);
337 }
GLM_FUNC_QUALIFIER __m128 sse_rnd_ps(__m128 x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat4x4<T> glm::saturation ( const T  s)

Definition at line 110 of file color_space.inl.

References T.

111  {
112  detail::tvec3<T> rgbw = detail::tvec3<T>(T(0.2126), T(0.7152), T(0.0722));
113 
114  T col0 = (T(1) - s) * rgbw.r;
115  T col1 = (T(1) - s) * rgbw.g;
116  T col2 = (T(1) - s) * rgbw.b;
117 
118  detail::tmat4x4<T> result(T(1));
119  result[0][0] = col0 + s;
120  result[0][1] = col0;
121  result[0][2] = col0;
122  result[1][0] = col1;
123  result[1][1] = col1 + s;
124  result[1][2] = col1;
125  result[2][0] = col2;
126  result[2][1] = col2;
127  result[2][2] = col2 + s;
128  return result;
129  }
GLdouble s
Definition: glew.h:1376
GLuint64EXT * result
Definition: glew.h:12708
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::saturation ( const T  s,
const detail::tvec3< T > &  color 
)

Definition at line 132 of file color_space.inl.

References saturation(), and T.

133  {
134  return detail::tvec3<T>(saturation(s) * detail::tvec4<T>(color, T(0)));
135  }
GLM_FUNC_QUALIFIER detail::tvec4< T > saturation(const T s, const detail::tvec4< T > &color)
GLdouble s
Definition: glew.h:1376
GLuint color
Definition: glew.h:7185
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::saturation ( const T  s,
const detail::tvec4< T > &  color 
)

Definition at line 138 of file color_space.inl.

References saturation().

139  {
140  return saturation(s) * color;
141  }
GLM_FUNC_QUALIFIER detail::tvec4< T > saturation(const T s, const detail::tvec4< T > &color)
GLdouble s
Definition: glew.h:1376
GLuint color
Definition: glew.h:7185
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat4x4<T> glm::scale_slow ( detail::tmat4x4< T > const &  m,
detail::tvec3< T > const &  v 
)

Definition at line 159 of file matrix_transform.inl.

References T, glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

163  {
164  detail::tmat4x4<T> Result(T(1));
165  Result[0][0] = v.x;
166  Result[1][1] = v.y;
167  Result[2][2] = v.z;
168  return m * Result;
169  }
const GLdouble * m
Definition: glew.h:8385
const GLdouble * v
Definition: glew.h:1377
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat4x4<T> glm::scaleBias ( scale,
bias 
)

Definition at line 133 of file transform2.inl.

References scale(), and T.

136  {
137  detail::tmat4x4<T> result;
138  result[3] = detail::tvec4<T>(detail::tvec3<T>(bias), T(1));
139  result[0][0] = scale;
140  result[1][1] = scale;
141  result[2][2] = scale;
142  return result;
143  }
GLenum GLenum GLenum GLenum GLenum scale
Definition: glew.h:12632
GLfloat bias
Definition: glew.h:9533
GLuint64EXT * result
Definition: glew.h:12708
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat4x4<T> glm::scaleBias ( const detail::tmat4x4< T > &  m,
scale,
bias 
)

Definition at line 146 of file transform2.inl.

References scaleBias().

150  {
151  return m * scaleBias(scale, bias);
152  }
GLenum GLenum GLenum GLenum GLenum scale
Definition: glew.h:12632
const GLdouble * m
Definition: glew.h:8385
GLfloat bias
Definition: glew.h:9533
GLM_FUNC_QUALIFIER detail::tmat4x4< T > scaleBias(const detail::tmat4x4< T > &m, T scale, T bias)
Definition: transform2.inl:146
template<typename genFIType >
GLM_FUNC_QUALIFIER genFIType glm::sign ( genFIType const &  x)

Definition at line 77 of file func_common.inl.

References GLM_STATIC_ASSERT.

80  {
82  detail::type<genFIType>::is_float ||
83  detail::type<genFIType>::is_int, "'sign' only accept signed inputs");
84 
85  genFIType result;
86  if(x > genFIType(0))
87  result = genFIType(1);
88  else if(x < genFIType(0))
89  result = genFIType(-1);
90  else
91  result = genFIType(0);
92  return result;
93  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
GLuint64EXT * result
Definition: glew.h:12708
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::sign ( detail::fvec4SIMD const &  x)

Definition at line 296 of file simd_vec4.inl.

References glm::detail::sse_sgn_ps().

299 {
300  return detail::sse_sgn_ps(x.Data);
301 }
GLM_FUNC_QUALIFIER __m128 sse_sgn_ps(__m128 x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER T glm::simplex ( glm::detail::tvec2< T > const &  v)

Definition at line 651 of file noise.inl.

References abs(), dot(), floor(), fract(), max(), mod(), permute(), T, glm::detail::tvec4< T >::w, glm::detail::tvec2< T >::x, glm::detail::tvec3< T >::x, glm::detail::tvec4< T >::x, glm::detail::tvec2< T >::y, glm::detail::tvec3< T >::y, glm::detail::tvec4< T >::y, glm::detail::tvec3< T >::z, and glm::detail::tvec4< T >::z.

652  {
653  detail::tvec4<T> const C = detail::tvec4<T>(
654  T( 0.211324865405187), // (3.0 - sqrt(3.0)) / 6.0
655  T( 0.366025403784439), // 0.5 * (sqrt(3.0) - 1.0)
656  T(-0.577350269189626), // -1.0 + 2.0 * C.x
657  T( 0.024390243902439)); // 1.0 / 41.0
658 
659  // First corner
660  detail::tvec2<T> i = floor(v + dot(v, detail::tvec2<T>(C[1])));
661  detail::tvec2<T> x0 = v - i + dot(i, detail::tvec2<T>(C[0]));
662 
663  // Other corners
664  //i1.x = step( x0.y, x0.x ); // x0.x > x0.y ? 1.0 : 0.0
665  //i1.y = 1.0 - i1.x;
666  detail::tvec2<T> i1 = (x0.x > x0.y) ? detail::tvec2<T>(1, 0) : detail::tvec2<T>(0, 1);
667  // x0 = x0 - 0.0 + 0.0 * C.xx ;
668  // x1 = x0 - i1 + 1.0 * C.xx ;
669  // x2 = x0 - 1.0 + 2.0 * C.xx ;
670  detail::tvec4<T> x12 = detail::tvec4<T>(x0.x, x0.y, x0.x, x0.y) + detail::tvec4<T>(C.x, C.x, C.z, C.z);
671  x12 = detail::tvec4<T>(detail::tvec2<T>(x12) - i1, x12.z, x12.w);
672 
673  // Permutations
674  i = mod(i, T(289)); // Avoid truncation effects in permutation
675  detail::tvec3<T> p = permute(
676  permute(i.y + detail::tvec3<T>(T(0), i1.y, T(1)))
677  + i.x + detail::tvec3<T>(T(0), i1.x, T(1)));
678 
679  detail::tvec3<T> m = max(T(0.5) - detail::tvec3<T>(
680  dot(x0, x0),
681  dot(detail::tvec2<T>(x12.x, x12.y), detail::tvec2<T>(x12.x, x12.y)),
682  dot(detail::tvec2<T>(x12.z, x12.w), detail::tvec2<T>(x12.z, x12.w))), T(0));
683  m = m * m ;
684  m = m * m ;
685 
686  // Gradients: 41 points uniformly over a line, mapped onto a diamond.
687  // The ring size 17*17 = 289 is close to a multiple of 41 (41*7 = 287)
688 
689  detail::tvec3<T> x = T(2) * fract(p * C.w) - T(1);
690  detail::tvec3<T> h = abs(x) - T(0.5);
691  detail::tvec3<T> ox = floor(x + T(0.5));
692  detail::tvec3<T> a0 = x - ox;
693 
694  // Normalise gradients implicitly by scaling m
695  // Inlined for speed: m *= taylorInvSqrt( a0*a0 + h*h );
696  m *= T(1.79284291400159) - T(0.85373472095314) * (a0 * a0 + h * h);
697 
698  // Compute final noise value at P
699  detail::tvec3<T> g;
700  g.x = a0.x * x0.x + h.x * x0.y;
701  //g.yz = a0.yz * x12.xz + h.yz * x12.yw;
702  g.y = a0.y * x12.x + h.y * x12.y;
703  g.z = a0.z * x12.z + h.z * x12.w;
704  return T(130) * dot(m, g);
705  }
GLM_FUNC_QUALIFIER vecType< T > permute(vecType< T > const &x)
Definition: noise.inl:49
GLboolean GLboolean g
Definition: glew.h:8736
GLM_FUNC_DECL genType mod(genType const &x, genType const &y)
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
const GLdouble * m
Definition: glew.h:8385
GLM_FUNC_DECL genType fract(genType const &x)
GLM_FUNC_DECL genType floor(genType const &x)
GLM_FUNC_DECL genType abs(genType const &x)
GLfloat GLfloat p
Definition: glew.h:14938
GLfloat GLfloat GLfloat GLfloat h
Definition: glew.h:7294
GLuint GLfloat x0
Definition: glew.h:11582
GLM_FUNC_DECL genType max(genType const &x, genType const &y)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER T glm::simplex ( detail::tvec3< T > const &  v)

Definition at line 708 of file noise.inl.

References abs(), dot(), floor(), max(), min(), mod289(), permute(), step(), T, taylorInvSqrt(), glm::detail::tvec4< T >::w, glm::detail::tvec2< T >::x, glm::detail::tvec3< T >::x, glm::detail::tvec4< T >::x, glm::detail::tvec2< T >::y, glm::detail::tvec3< T >::y, glm::detail::tvec4< T >::y, glm::detail::tvec3< T >::z, and glm::detail::tvec4< T >::z.

709  {
710  detail::tvec2<T> const C(1.0 / 6.0, 1.0 / 3.0);
711  detail::tvec4<T> const D(0.0, 0.5, 1.0, 2.0);
712 
713  // First corner
714  detail::tvec3<T> i(floor(v + dot(v, detail::tvec3<T>(C.y))));
715  detail::tvec3<T> x0(v - i + dot(i, detail::tvec3<T>(C.x)));
716 
717  // Other corners
718  detail::tvec3<T> g(step(detail::tvec3<T>(x0.y, x0.z, x0.x), x0));
719  detail::tvec3<T> l(T(1) - g);
720  detail::tvec3<T> i1(min(g, detail::tvec3<T>(l.z, l.x, l.y)));
721  detail::tvec3<T> i2(max(g, detail::tvec3<T>(l.z, l.x, l.y)));
722 
723  // x0 = x0 - 0.0 + 0.0 * C.xxx;
724  // x1 = x0 - i1 + 1.0 * C.xxx;
725  // x2 = x0 - i2 + 2.0 * C.xxx;
726  // x3 = x0 - 1.0 + 3.0 * C.xxx;
727  detail::tvec3<T> x1(x0 - i1 + C.x);
728  detail::tvec3<T> x2(x0 - i2 + C.y); // 2.0*C.x = 1/3 = C.y
729  detail::tvec3<T> x3(x0 - D.y); // -1.0+3.0*C.x = -0.5 = -D.y
730 
731  // Permutations
732  i = mod289(i);
733  detail::tvec4<T> p(permute(permute(permute(
734  i.z + detail::tvec4<T>(T(0), i1.z, i2.z, T(1))) +
735  i.y + detail::tvec4<T>(T(0), i1.y, i2.y, T(1))) +
736  i.x + detail::tvec4<T>(T(0), i1.x, i2.x, T(1))));
737 
738  // Gradients: 7x7 points over a square, mapped onto an octahedron.
739  // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294)
740  T n_ = T(0.142857142857); // 1.0/7.0
741  detail::tvec3<T> ns(n_ * detail::tvec3<T>(D.w, D.y, D.z) - detail::tvec3<T>(D.x, D.z, D.x));
742 
743  detail::tvec4<T> j(p - T(49) * floor(p * ns.z * ns.z)); // mod(p,7*7)
744 
745  detail::tvec4<T> x_(floor(j * ns.z));
746  detail::tvec4<T> y_(floor(j - T(7) * x_)); // mod(j,N)
747 
748  detail::tvec4<T> x(x_ * ns.x + ns.y);
749  detail::tvec4<T> y(y_ * ns.x + ns.y);
750  detail::tvec4<T> h(T(1) - abs(x) - abs(y));
751 
752  detail::tvec4<T> b0(x.x, x.y, y.x, y.y);
753  detail::tvec4<T> b1(x.z, x.w, y.z, y.w);
754 
755  // vec4 s0 = vec4(lessThan(b0,0.0))*2.0 - 1.0;
756  // vec4 s1 = vec4(lessThan(b1,0.0))*2.0 - 1.0;
757  detail::tvec4<T> s0(floor(b0) * T(2) + T(1));
758  detail::tvec4<T> s1(floor(b1) * T(2) + T(1));
759  detail::tvec4<T> sh(-step(h, detail::tvec4<T>(0.0)));
760 
761  detail::tvec4<T> a0 = detail::tvec4<T>(b0.x, b0.z, b0.y, b0.w) + detail::tvec4<T>(s0.x, s0.z, s0.y, s0.w) * detail::tvec4<T>(sh.x, sh.x, sh.y, sh.y);
762  detail::tvec4<T> a1 = detail::tvec4<T>(b1.x, b1.z, b1.y, b1.w) + detail::tvec4<T>(s1.x, s1.z, s1.y, s1.w) * detail::tvec4<T>(sh.z, sh.z, sh.w, sh.w);
763 
764  detail::tvec3<T> p0(a0.x, a0.y, h.x);
765  detail::tvec3<T> p1(a0.z, a0.w, h.y);
766  detail::tvec3<T> p2(a1.x, a1.y, h.z);
767  detail::tvec3<T> p3(a1.z, a1.w, h.w);
768 
769  // Normalise gradients
770  detail::tvec4<T> norm = taylorInvSqrt(detail::tvec4<T>(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3)));
771  p0 *= norm.x;
772  p1 *= norm.y;
773  p2 *= norm.z;
774  p3 *= norm.w;
775 
776  // Mix final noise value
777  detail::tvec4<T> m = max(T(0.6) - detail::tvec4<T>(dot(x0, x0), dot(x1, x1), dot(x2, x2), dot(x3, x3)), T(0));
778  m = m * m;
779  return T(42) * dot(m * m, detail::tvec4<T>(dot(p0, x0), dot(p1, x1), dot(p2, x2), dot(p3, x3)));
780  }
GLM_FUNC_QUALIFIER vecType< T > permute(vecType< T > const &x)
Definition: noise.inl:49
GLM_FUNC_DECL genType min(genType const &x, genType const &y)
GLboolean GLboolean g
Definition: glew.h:8736
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLM_FUNC_QUALIFIER vecType< T > taylorInvSqrt(vecType< T > const &r)
Definition: noise.inl:61
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat s1
Definition: glew.h:11582
GLdouble l
Definition: glew.h:8383
GLM_FUNC_DECL genType step(genType const &edge, genType const &x)
const GLdouble * m
Definition: glew.h:8385
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat s0
Definition: glew.h:11582
GLuint GLfloat GLfloat GLfloat x1
Definition: glew.h:11582
GLM_FUNC_DECL genType floor(genType const &x)
GLM_FUNC_DECL genType abs(genType const &x)
GLfloat GLfloat p
Definition: glew.h:14938
const GLdouble * v
Definition: glew.h:1377
GLfloat GLfloat GLfloat GLfloat h
Definition: glew.h:7294
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLuint GLfloat x0
Definition: glew.h:11582
GLM_FUNC_DECL genType max(genType const &x, genType const &y)
GLM_FUNC_QUALIFIER T mod289(T const &x)
Definition: noise.inl:37
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER T glm::simplex ( detail::tvec4< T > const &  v)

Definition at line 783 of file noise.inl.

References clamp(), dot(), floor(), grad4(), max(), mod(), permute(), step(), T, taylorInvSqrt(), glm::detail::tvec4< T >::w, glm::detail::tvec3< T >::x, glm::detail::tvec4< T >::x, glm::detail::tvec3< T >::y, glm::detail::tvec4< T >::y, glm::detail::tvec3< T >::z, and glm::detail::tvec4< T >::z.

784  {
785  detail::tvec4<T> const C(
786  0.138196601125011, // (5 - sqrt(5))/20 G4
787  0.276393202250021, // 2 * G4
788  0.414589803375032, // 3 * G4
789  -0.447213595499958); // -1 + 4 * G4
790 
791  // (sqrt(5) - 1)/4 = F4, used once below
792  T const F4 = T(0.309016994374947451);
793 
794  // First corner
795  detail::tvec4<T> i = floor(v + dot(v, vec4(F4)));
796  detail::tvec4<T> x0 = v - i + dot(i, vec4(C.x));
797 
798  // Other corners
799 
800  // Rank sorting originally contributed by Bill Licea-Kane, AMD (formerly ATI)
801  detail::tvec4<T> i0;
802  detail::tvec3<T> isX = step(detail::tvec3<T>(x0.y, x0.z, x0.w), detail::tvec3<T>(x0.x));
803  detail::tvec3<T> isYZ = step(detail::tvec3<T>(x0.z, x0.w, x0.w), detail::tvec3<T>(x0.y, x0.y, x0.z));
804  // i0.x = dot(isX, vec3(1.0));
805  //i0.x = isX.x + isX.y + isX.z;
806  //i0.yzw = T(1) - isX;
807  i0 = detail::tvec4<T>(isX.x + isX.y + isX.z, T(1) - isX);
808  // i0.y += dot(isYZ.xy, vec2(1.0));
809  i0.y += isYZ.x + isYZ.y;
810  //i0.zw += 1.0 - detail::tvec2<T>(isYZ.x, isYZ.y);
811  i0.z += T(1) - isYZ.x;
812  i0.w += T(1) - isYZ.y;
813  i0.z += isYZ.z;
814  i0.w += T(1) - isYZ.z;
815 
816  // i0 now contains the unique values 0,1,2,3 in each channel
817  detail::tvec4<T> i3 = clamp(i0, 0.0, 1.0);
818  detail::tvec4<T> i2 = clamp(i0 - 1.0, 0.0, 1.0);
819  detail::tvec4<T> i1 = clamp(i0 - 2.0, 0.0, 1.0);
820 
821  // x0 = x0 - 0.0 + 0.0 * C.xxxx
822  // x1 = x0 - i1 + 0.0 * C.xxxx
823  // x2 = x0 - i2 + 0.0 * C.xxxx
824  // x3 = x0 - i3 + 0.0 * C.xxxx
825  // x4 = x0 - 1.0 + 4.0 * C.xxxx
826  detail::tvec4<T> x1 = x0 - i1 + C.x;
827  detail::tvec4<T> x2 = x0 - i2 + C.y;
828  detail::tvec4<T> x3 = x0 - i3 + C.z;
829  detail::tvec4<T> x4 = x0 + C.w;
830 
831  // Permutations
832  i = mod(i, T(289));
833  T j0 = permute(permute(permute(permute(i.w) + i.z) + i.y) + i.x);
834  detail::tvec4<T> j1 = permute(permute(permute(permute(
835  i.w + detail::tvec4<T>(i1.w, i2.w, i3.w, T(1)))
836  + i.z + detail::tvec4<T>(i1.z, i2.z, i3.z, T(1)))
837  + i.y + detail::tvec4<T>(i1.y, i2.y, i3.y, T(1)))
838  + i.x + detail::tvec4<T>(i1.x, i2.x, i3.x, T(1)));
839 
840  // Gradients: 7x7x6 points over a cube, mapped onto a 4-cross polytope
841  // 7*7*6 = 294, which is close to the ring size 17*17 = 289.
842  detail::tvec4<T> ip = detail::tvec4<T>(T(1) / T(294), T(1) / T(49), T(1) / T(7), T(0));
843 
844  detail::tvec4<T> p0 = grad4(j0, ip);
845  detail::tvec4<T> p1 = grad4(j1.x, ip);
846  detail::tvec4<T> p2 = grad4(j1.y, ip);
847  detail::tvec4<T> p3 = grad4(j1.z, ip);
848  detail::tvec4<T> p4 = grad4(j1.w, ip);
849 
850  // Normalise gradients
851  detail::tvec4<T> norm = taylorInvSqrt(detail::tvec4<T>(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3)));
852  p0 *= norm.x;
853  p1 *= norm.y;
854  p2 *= norm.z;
855  p3 *= norm.w;
856  p4 *= taylorInvSqrt(dot(p4, p4));
857 
858  // Mix contributions from the five corners
859  detail::tvec3<T> m0 = max(T(0.6) - detail::tvec3<T>(dot(x0, x0), dot(x1, x1), dot(x2, x2)), T(0));
860  detail::tvec2<T> m1 = max(T(0.6) - detail::tvec2<T>(dot(x3, x3), dot(x4, x4) ), T(0));
861  m0 = m0 * m0;
862  m1 = m1 * m1;
863  return T(49) *
864  (dot(m0 * m0, detail::tvec3<T>(dot(p0, x0), dot(p1, x1), dot(p2, x2))) +
865  dot(m1 * m1, detail::tvec2<T>(dot(p3, x3), dot(p4, x4))));
866  }
GLM_FUNC_QUALIFIER vecType< T > permute(vecType< T > const &x)
Definition: noise.inl:49
GLenum clamp
Definition: glew.h:3611
GLM_FUNC_DECL genType mod(genType const &x, genType const &y)
GLM_FUNC_DECL genType::value_type dot(genType const &x, genType const &y)
GLM_FUNC_QUALIFIER vecType< T > taylorInvSqrt(vecType< T > const &r)
Definition: noise.inl:61
GLM_FUNC_DECL genType step(genType const &edge, genType const &x)
GLuint GLfloat GLfloat GLfloat x1
Definition: glew.h:11582
GLM_FUNC_DECL genType floor(genType const &x)
const GLdouble * v
Definition: glew.h:1377
GLM_FUNC_QUALIFIER detail::tvec4< T > grad4(T const &j, detail::tvec4< T > const &ip)
Definition: noise.inl:73
GLuint GLfloat x0
Definition: glew.h:11582
GLM_FUNC_DECL genType max(genType const &x, genType const &y)
mediump_vec4 vec4
Definition: type.hpp:114
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::smoothstep ( detail::fvec4SIMD const &  edge0,
detail::fvec4SIMD const &  edge1,
detail::fvec4SIMD const &  x 
)

Definition at line 479 of file simd_vec4.inl.

References glm::detail::sse_ssp_ps().

484 {
485  return detail::sse_ssp_ps(edge0.Data, edge1.Data, x.Data);
486 }
GLM_FUNC_QUALIFIER __m128 sse_ssp_ps(__m128 edge0, __m128 edge1, __m128 x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::smoothstep ( float const &  edge0,
float const &  edge1,
detail::fvec4SIMD const &  x 
)

Definition at line 489 of file simd_vec4.inl.

References glm::detail::sse_ssp_ps().

494 {
495  return detail::sse_ssp_ps(_mm_set1_ps(edge0), _mm_set1_ps(edge1), x.Data);
496 }
GLM_FUNC_QUALIFIER __m128 sse_ssp_ps(__m128 edge0, __m128 edge1, __m128 x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::smoothstep ( typename detail::tvec2< T >::value_type const &  edge0,
typename detail::tvec2< T >::value_type const &  edge1,
detail::tvec2< T > const &  x 
)

Definition at line 757 of file func_common.inl.

References smoothstep(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

762  {
763  return detail::tvec2<T>(
764  smoothstep(edge0, edge1, x.x),
765  smoothstep(edge0, edge1, x.y));
766  }
GLM_FUNC_QUALIFIER detail::tvec4< T > smoothstep(detail::tvec4< T > const &edge0, detail::tvec4< T > const &edge1, detail::tvec4< T > const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::smoothstep ( typename detail::tvec3< T >::value_type const &  edge0,
typename detail::tvec3< T >::value_type const &  edge1,
detail::tvec3< T > const &  x 
)

Definition at line 770 of file func_common.inl.

References smoothstep(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

775  {
776  return detail::tvec3<T>(
777  smoothstep(edge0, edge1, x.x),
778  smoothstep(edge0, edge1, x.y),
779  smoothstep(edge0, edge1, x.z));
780  }
GLM_FUNC_QUALIFIER detail::tvec4< T > smoothstep(detail::tvec4< T > const &edge0, detail::tvec4< T > const &edge1, detail::tvec4< T > const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::smoothstep ( typename detail::tvec4< T >::value_type const &  edge0,
typename detail::tvec4< T >::value_type const &  edge1,
detail::tvec4< T > const &  x 
)

Definition at line 784 of file func_common.inl.

References smoothstep(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

789  {
790  return detail::tvec4<T>(
791  smoothstep(edge0, edge1, x.x),
792  smoothstep(edge0, edge1, x.y),
793  smoothstep(edge0, edge1, x.z),
794  smoothstep(edge0, edge1, x.w));
795  }
GLM_FUNC_QUALIFIER detail::tvec4< T > smoothstep(detail::tvec4< T > const &edge0, detail::tvec4< T > const &edge1, detail::tvec4< T > const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::smoothstep ( detail::tvec2< T > const &  edge0,
detail::tvec2< T > const &  edge1,
detail::tvec2< T > const &  x 
)

Definition at line 799 of file func_common.inl.

References smoothstep(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

804  {
805  return detail::tvec2<T>(
806  smoothstep(edge0.x, edge1.x, x.x),
807  smoothstep(edge0.y, edge1.y, x.y));
808  }
GLM_FUNC_QUALIFIER detail::tvec4< T > smoothstep(detail::tvec4< T > const &edge0, detail::tvec4< T > const &edge1, detail::tvec4< T > const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::smoothstep ( detail::tvec3< T > const &  edge0,
detail::tvec3< T > const &  edge1,
detail::tvec3< T > const &  x 
)

Definition at line 812 of file func_common.inl.

References smoothstep(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

817  {
818  return detail::tvec3<T>(
819  smoothstep(edge0.x, edge1.x, x.x),
820  smoothstep(edge0.y, edge1.y, x.y),
821  smoothstep(edge0.z, edge1.z, x.z));
822  }
GLM_FUNC_QUALIFIER detail::tvec4< T > smoothstep(detail::tvec4< T > const &edge0, detail::tvec4< T > const &edge1, detail::tvec4< T > const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::smoothstep ( detail::tvec4< T > const &  edge0,
detail::tvec4< T > const &  edge1,
detail::tvec4< T > const &  x 
)

Definition at line 826 of file func_common.inl.

References smoothstep(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

831  {
832  return detail::tvec4<T>(
833  smoothstep(edge0.x, edge1.x, x.x),
834  smoothstep(edge0.y, edge1.y, x.y),
835  smoothstep(edge0.z, edge1.z, x.z),
836  smoothstep(edge0.w, edge1.w, x.w));
837  }
GLM_FUNC_QUALIFIER detail::tvec4< T > smoothstep(detail::tvec4< T > const &edge0, detail::tvec4< T > const &edge1, detail::tvec4< T > const &x)
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::sqrt ( detail::fvec4SIMD const &  x)

Definition at line 694 of file simd_vec4.inl.

References inversesqrt().

695 {
696  return _mm_mul_ps(inversesqrt(x).Data, x.Data);
697 }
GLM_FUNC_QUALIFIER detail::fvec4SIMD inversesqrt(detail::fvec4SIMD const &x)
Definition: simd_vec4.inl:711
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tquat<T> glm::squad ( detail::tquat< T > const &  q1,
detail::tquat< T > const &  q2,
detail::tquat< T > const &  s1,
detail::tquat< T > const &  s2,
T const &  h 
)

Definition at line 36 of file quaternion.inl.

References mix(), and T.

42  {
43  return mix(mix(q1, q2, h), mix(s1, s2, h), T(2) * (T(1) - h) * h);
44  }
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat s1
Definition: glew.h:11582
GLfloat GLfloat GLfloat GLfloat h
Definition: glew.h:7294
GLM_FUNC_QUALIFIER detail::tquat< T > mix(detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
Definition: quaternion.inl:449
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::step ( detail::fvec4SIMD const &  edge,
detail::fvec4SIMD const &  x 
)

Definition at line 459 of file simd_vec4.inl.

References glm::detail::one.

463 {
464  __m128 cmp0 = _mm_cmpngt_ps(x.Data, edge.Data);
465  return _mm_max_ps(_mm_min_ps(cmp0, _mm_setzero_ps()), detail::one);
466 }
static const __m128 GLM_VAR_USED one
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::step ( float const &  edge,
detail::fvec4SIMD const &  x 
)

Definition at line 469 of file simd_vec4.inl.

References glm::detail::one.

473 {
474  __m128 cmp0 = _mm_cmpngt_ps(x.Data, _mm_set1_ps(edge));
475  return _mm_max_ps(_mm_min_ps(cmp0, _mm_setzero_ps()), detail::one);
476 }
static const __m128 GLM_VAR_USED one
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::step ( typename detail::tvec2< T >::value_type const &  edge,
detail::tvec2< T > const &  x 
)

Definition at line 664 of file func_common.inl.

References T, glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

668  {
669  return detail::tvec2<T>(
670  x.x < edge ? T(0) : T(1),
671  x.y < edge ? T(0) : T(1));
672  }
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::step ( typename detail::tvec3< T >::value_type const &  edge,
detail::tvec3< T > const &  x 
)

Definition at line 676 of file func_common.inl.

References T, glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

680  {
681  return detail::tvec3<T>(
682  x.x < edge ? T(0) : T(1),
683  x.y < edge ? T(0) : T(1),
684  x.z < edge ? T(0) : T(1));
685  }
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::step ( typename detail::tvec4< T >::value_type const &  edge,
detail::tvec4< T > const &  x 
)

Definition at line 689 of file func_common.inl.

References T, glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

693  {
694  return detail::tvec4<T>(
695  x.x < edge ? T(0) : T(1),
696  x.y < edge ? T(0) : T(1),
697  x.z < edge ? T(0) : T(1),
698  x.w < edge ? T(0) : T(1));
699  }
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::step ( detail::tvec2< T > const &  edge,
detail::tvec2< T > const &  x 
)

Definition at line 703 of file func_common.inl.

References T, glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

707  {
708  return detail::tvec2<T>(
709  x.x < edge.x ? T(0) : T(1),
710  x.y < edge.y ? T(0) : T(1));
711  }
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::step ( detail::tvec3< T > const &  edge,
detail::tvec3< T > const &  x 
)

Definition at line 715 of file func_common.inl.

References T, glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

719  {
720  return detail::tvec3<T>(
721  x.x < edge.x ? T(0) : T(1),
722  x.y < edge.y ? T(0) : T(1),
723  x.z < edge.z ? T(0) : T(1));
724  }
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::step ( detail::tvec4< T > const &  edge,
detail::tvec4< T > const &  x 
)

Definition at line 728 of file func_common.inl.

References T, glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

732  {
733  return detail::tvec4<T>(
734  x.x < edge.x ? T(0) : T(1),
735  x.y < edge.y ? T(0) : T(1),
736  x.z < edge.z ? T(0) : T(1),
737  x.w < edge.w ? T(0) : T(1));
738  }
GLdouble GLdouble z
Definition: glew.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<typename genType >
GLM_FUNC_QUALIFIER genType glm::sub ( genType const &  a,
genType const &  b 
)

Definition at line 19 of file verbose_operator.inl.

20  {
21  return a - b;
22  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
template<typename T >
GLM_FUNC_QUALIFIER T& glm::swizzle ( detail::tvec4< T > &  v,
comp  x 
)

Definition at line 79 of file swizzle.inl.

83  {
84  return v[x];
85  }
const GLdouble * v
Definition: glew.h:1377
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tref2<T> glm::swizzle ( detail::tvec4< T > &  v,
comp  x,
comp  y 
)

Definition at line 89 of file swizzle.inl.

93  {
94  return detail::tref2<T>(v[x], v[y]);
95  }
const GLdouble * v
Definition: glew.h:1377
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tref3<T> glm::swizzle ( detail::tvec4< T > &  v,
comp  x,
comp  y,
comp  z 
)

Definition at line 99 of file swizzle.inl.

103  {
104  return detail::tref3<T>(v[x], v[y], v[z]);
105  }
GLdouble GLdouble z
Definition: glew.h:1545
const GLdouble * v
Definition: glew.h:1377
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tref4<T> glm::swizzle ( detail::tvec4< T > &  v,
comp  x,
comp  y,
comp  z,
comp  w 
)

Definition at line 109 of file swizzle.inl.

113  {
114  return detail::tref4<T>(v[x], v[y], v[z], v[w]);
115  }
GLdouble GLdouble z
Definition: glew.h:1545
const GLdouble * v
Definition: glew.h:1377
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1876
template<typename T >
GLM_FUNC_QUALIFIER T glm::taylorInvSqrt ( T const &  r)

Definition at line 55 of file noise.inl.

References T.

Referenced by noise1(), perlin(), and simplex().

56  {
57  return T(1.79284291400159) - T(0.85373472095314) * r;
58  }
GLdouble GLdouble GLdouble r
Definition: glew.h:1392
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType<T> glm::taylorInvSqrt ( vecType< T > const &  r)

Definition at line 61 of file noise.inl.

References T.

62  {
63  return T(1.79284291400159) - T(0.85373472095314) * r;
64  }
GLdouble GLdouble GLdouble r
Definition: glew.h:1392
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::half const &  x)

Definition at line 44 of file string_cast.inl.

References glm::detail::format().

45  {
46  return detail::format("half(%2.4f)", float(x));
47  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER std::string glm::to_string ( float  x)

Definition at line 49 of file string_cast.inl.

References glm::detail::format().

50  {
51  return detail::format("float(%f)", x);
52  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER std::string glm::to_string ( double  x)

Definition at line 54 of file string_cast.inl.

References glm::detail::format().

55  {
56  return detail::format("double(%f)", x);
57  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER std::string glm::to_string ( int  x)

Definition at line 59 of file string_cast.inl.

References glm::detail::format().

60  {
61  return detail::format("int(%d)", x);
62  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER std::string glm::to_string ( unsigned int  x)

Definition at line 64 of file string_cast.inl.

References glm::detail::format().

65  {
66  return detail::format("uint(%d)", x);
67  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tvec2< bool > const &  v)

Definition at line 73 of file string_cast.inl.

References glm::detail::False, glm::detail::format(), glm::detail::True, glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

76  {
77  return detail::format("bvec2(%s, %s)",
79  v.y ? detail::True : detail::False);
80  }
static const char * True
Definition: string_cast.inl:37
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
static const char * False
Definition: string_cast.inl:38
const GLdouble * v
Definition: glew.h:1377
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tvec3< bool > const &  v)

Definition at line 83 of file string_cast.inl.

References glm::detail::False, glm::detail::format(), glm::detail::True, glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

86  {
87  return detail::format("bvec3(%s, %s, %s)",
89  v.y ? detail::True : detail::False,
90  v.z ? detail::True : detail::False);
91  }
static const char * True
Definition: string_cast.inl:37
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
static const char * False
Definition: string_cast.inl:38
const GLdouble * v
Definition: glew.h:1377
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tvec4< bool > const &  v)

Definition at line 94 of file string_cast.inl.

References glm::detail::False, glm::detail::format(), glm::detail::True, glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

97  {
98  return detail::format("bvec4(%s, %s, %s, %s)",
100  v.y ? detail::True : detail::False,
101  v.z ? detail::True : detail::False,
102  v.w ? detail::True : detail::False);
103  }
static const char * True
Definition: string_cast.inl:37
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
static const char * False
Definition: string_cast.inl:38
const GLdouble * v
Definition: glew.h:1377
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tvec2< detail::half > const &  v)

Definition at line 110 of file string_cast.inl.

References glm::detail::format(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

113  {
114  return detail::format("hvec2(%2.4f, %2.4f)", v.x.toFloat(), v.y.toFloat());
115  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
const GLdouble * v
Definition: glew.h:1377
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tvec3< detail::half > const &  v)

Definition at line 119 of file string_cast.inl.

References glm::detail::format(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

122  {
123  return detail::format("hvec3(%2.4f, %2.4f, %2.4f)", v.x.toFloat(), v.y.toFloat(), v.z.toFloat());
124  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
const GLdouble * v
Definition: glew.h:1377
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tvec4< detail::half > const &  v)

Definition at line 128 of file string_cast.inl.

References glm::detail::format(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

131  {
132  return detail::format("hvec4(%2.4f, %2.4f, %2.4f, %2.4f)", v.x.toFloat(), v.y.toFloat(), v.z.toFloat(), v.w.toFloat());
133  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
const GLdouble * v
Definition: glew.h:1377
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tvec2< float > const &  v)

Definition at line 140 of file string_cast.inl.

References glm::detail::format(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

143  {
144  return detail::format("fvec2(%f, %f)", v.x, v.y);
145  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
const GLdouble * v
Definition: glew.h:1377
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tvec3< float > const &  v)

Definition at line 149 of file string_cast.inl.

References glm::detail::format(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

152  {
153  return detail::format("fvec3(%f, %f, %f)", v.x, v.y, v.z);
154  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
const GLdouble * v
Definition: glew.h:1377
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tvec4< float > const &  v)

Definition at line 158 of file string_cast.inl.

References glm::detail::format(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

161  {
162  return detail::format("fvec4(%f, %f, %f, %f)", v.x, v.y, v.z, v.w);
163  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
const GLdouble * v
Definition: glew.h:1377
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tvec2< double > const &  v)

Definition at line 170 of file string_cast.inl.

References glm::detail::format(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

173  {
174  return detail::format("dvec2(%f, %f)", v.x, v.y);
175  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
const GLdouble * v
Definition: glew.h:1377
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tvec3< double > const &  v)

Definition at line 179 of file string_cast.inl.

References glm::detail::format(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

182  {
183  return detail::format("dvec3(%f, %f, %f)", v.x, v.y, v.z);
184  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
const GLdouble * v
Definition: glew.h:1377
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tvec4< double > const &  v)

Definition at line 188 of file string_cast.inl.

References glm::detail::format(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

191  {
192  return detail::format("dvec4(%f, %f, %f, %f)", v.x, v.y, v.z, v.w);
193  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
const GLdouble * v
Definition: glew.h:1377
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tvec2< int > const &  v)

Definition at line 200 of file string_cast.inl.

References glm::detail::format(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

203  {
204  return detail::format("ivec2(%d, %d)", v.x, v.y);
205  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
const GLdouble * v
Definition: glew.h:1377
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tvec3< int > const &  v)

Definition at line 209 of file string_cast.inl.

References glm::detail::format(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

212  {
213  return detail::format("ivec3(%d, %d, %d)", v.x, v.y, v.z);
214  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
const GLdouble * v
Definition: glew.h:1377
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tvec4< int > const &  v)

Definition at line 218 of file string_cast.inl.

References glm::detail::format(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

221  {
222  return detail::format("ivec4(%d, %d, %d, %d)", v.x, v.y, v.z, v.w);
223  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
const GLdouble * v
Definition: glew.h:1377
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tvec2< unsigned int > const &  v)

Definition at line 230 of file string_cast.inl.

References glm::detail::format(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

233  {
234  return detail::format("uvec2(%d, %d)", v.x, v.y);
235  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
const GLdouble * v
Definition: glew.h:1377
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tvec3< unsigned int > const &  v)

Definition at line 239 of file string_cast.inl.

References glm::detail::format(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

242  {
243  return detail::format("uvec3(%d, %d, %d)", v.x, v.y, v.z);
244  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
const GLdouble * v
Definition: glew.h:1377
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tvec4< unsigned int > const &  v)

Definition at line 248 of file string_cast.inl.

References glm::detail::format(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

251  {
252  return detail::format("uvec4(%d, %d, %d, %d)", v.x, v.y, v.z, v.w);
253  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
const GLdouble * v
Definition: glew.h:1377
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat2x2< detail::half > const &  m)

Definition at line 260 of file string_cast.inl.

References glm::detail::format().

263  {
264  return detail::format("hmat2x2((%f, %f), (%f, %f))",
265  m[0][0].toFloat(), m[0][1].toFloat(),
266  m[1][0].toFloat(), m[1][1].toFloat());
267  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
const GLdouble * m
Definition: glew.h:8385
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat2x3< detail::half > const &  x)

Definition at line 271 of file string_cast.inl.

References glm::detail::format().

274  {
275  return detail::format("hmat2x3((%f, %f, %f), (%f, %f, %f))",
276  x[0][0].toFloat(), x[0][1].toFloat(), x[0][2].toFloat(),
277  x[1][0].toFloat(), x[1][1].toFloat(), x[1][2].toFloat());
278  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat2x4< detail::half > const &  x)

Definition at line 282 of file string_cast.inl.

References glm::detail::format().

285  {
286  return detail::format("hmat2x4((%f, %f, %f, %f), (%f, %f, %f, %f))",
287  x[0][0].toFloat(), x[0][1].toFloat(), x[0][2].toFloat(), x[0][3].toFloat(),
288  x[1][0].toFloat(), x[1][1].toFloat(), x[1][2].toFloat(), x[1][3].toFloat());
289  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat3x2< detail::half > const &  x)

Definition at line 293 of file string_cast.inl.

References glm::detail::format().

296  {
297  return detail::format("hmat3x2((%f, %f), (%f, %f), (%f, %f))",
298  x[0][0].toFloat(), x[0][1].toFloat(),
299  x[1][0].toFloat(), x[1][1].toFloat(),
300  x[2][0].toFloat(), x[2][1].toFloat());
301  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat3x3< detail::half > const &  x)

Definition at line 305 of file string_cast.inl.

References glm::detail::format().

308  {
309  return detail::format("hmat3x3((%f, %f, %f), (%f, %f, %f), (%f, %f, %f))",
310  x[0][0].toFloat(), x[0][1].toFloat(), x[0][2].toFloat(),
311  x[1][0].toFloat(), x[1][1].toFloat(), x[1][2].toFloat(),
312  x[2][0].toFloat(), x[2][1].toFloat(), x[2][2].toFloat());
313  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat3x4< detail::half > const &  x)

Definition at line 317 of file string_cast.inl.

References glm::detail::format().

320  {
321  return detail::format("hmat3x4((%f, %f, %f, %f), (%f, %f, %f, %f), (%f, %f, %f, %f))",
322  x[0][0].toFloat(), x[0][1].toFloat(), x[0][2].toFloat(), x[0][3].toFloat(),
323  x[1][0].toFloat(), x[1][1].toFloat(), x[1][2].toFloat(), x[1][3].toFloat(),
324  x[2][0].toFloat(), x[2][1].toFloat(), x[2][2].toFloat(), x[2][3].toFloat());
325  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat4x2< detail::half > const &  x)

Definition at line 329 of file string_cast.inl.

References glm::detail::format().

332  {
333  return detail::format("hmat4x2((%f, %f), (%f, %f), (%f, %f), (%f, %f))",
334  x[0][0].toFloat(), x[0][1].toFloat(),
335  x[1][0].toFloat(), x[1][1].toFloat(),
336  x[2][0].toFloat(), x[2][1].toFloat(),
337  x[3][0].toFloat(), x[3][1].toFloat());
338  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat4x3< detail::half > const &  x)

Definition at line 342 of file string_cast.inl.

References glm::detail::format().

345  {
346  return detail::format("hmat4x3((%f, %f, %f), (%f, %f, %f), (%f, %f, %f), (%f, %f, %f))",
347  x[0][0].toFloat(), x[0][1].toFloat(), x[0][2].toFloat(),
348  x[1][0].toFloat(), x[1][1].toFloat(), x[1][2].toFloat(),
349  x[2][0].toFloat(), x[2][1].toFloat(), x[2][2].toFloat(),
350  x[3][0].toFloat(), x[3][1].toFloat(), x[3][2].toFloat());
351  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat4x4< detail::half > const &  x)

Definition at line 355 of file string_cast.inl.

References glm::detail::format().

358  {
359  return detail::format("hmat4x4((%f, %f, %f, %f), (%f, %f, %f, %f), (%f, %f, %f, %f), (%f, %f, %f, %f))",
360  x[0][0].toFloat(), x[0][1].toFloat(), x[0][2].toFloat(), x[0][3].toFloat(),
361  x[1][0].toFloat(), x[1][1].toFloat(), x[1][2].toFloat(), x[1][3].toFloat(),
362  x[2][0].toFloat(), x[2][1].toFloat(), x[2][2].toFloat(), x[2][3].toFloat(),
363  x[3][0].toFloat(), x[3][1].toFloat(), x[3][2].toFloat(), x[3][3].toFloat());
364  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat2x2< float > const &  x)

Definition at line 371 of file string_cast.inl.

References glm::detail::format().

374  {
375  return detail::format("mat2x2((%f, %f), (%f, %f))",
376  x[0][0], x[0][1],
377  x[1][0], x[1][1]);
378  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat2x3< float > const &  x)

Definition at line 382 of file string_cast.inl.

References glm::detail::format().

385  {
386  return detail::format("mat2x3((%f, %f, %f), (%f, %f, %f))",
387  x[0][0], x[0][1], x[0][2],
388  x[1][0], x[1][1], x[1][2]);
389  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat2x4< float > const &  x)

Definition at line 393 of file string_cast.inl.

References glm::detail::format().

396  {
397  return detail::format("mat2x4((%f, %f, %f, %f), (%f, %f, %f, %f))",
398  x[0][0], x[0][1], x[0][2], x[0][3],
399  x[1][0], x[1][1], x[1][2], x[1][3]);
400  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat3x2< float > const &  x)

Definition at line 404 of file string_cast.inl.

References glm::detail::format().

407  {
408  return detail::format("mat3x2((%f, %f), (%f, %f), (%f, %f))",
409  x[0][0], x[0][1],
410  x[1][0], x[1][1],
411  x[2][0], x[2][1]);
412  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat3x3< float > const &  x)

Definition at line 416 of file string_cast.inl.

References glm::detail::format().

419  {
420  return detail::format("mat3x3((%f, %f, %f), (%f, %f, %f), (%f, %f, %f))",
421  x[0][0], x[0][1], x[0][2],
422  x[1][0], x[1][1], x[1][2],
423  x[2][0], x[2][1], x[2][2]);
424  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat3x4< float > const &  x)

Definition at line 428 of file string_cast.inl.

References glm::detail::format().

431  {
432  return detail::format("mat3x4((%f, %f, %f, %f), (%f, %f, %f, %f), (%f, %f, %f, %f))",
433  x[0][0], x[0][1], x[0][2], x[0][3],
434  x[1][0], x[1][1], x[1][2], x[1][3],
435  x[2][0], x[2][1], x[2][2], x[2][3]);
436  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat4x2< float > const &  x)

Definition at line 440 of file string_cast.inl.

References glm::detail::format().

443  {
444  return detail::format("mat4x2((%f, %f), (%f, %f), (%f, %f), (%f, %f))",
445  x[0][0], x[0][1],
446  x[1][0], x[1][1],
447  x[2][0], x[2][1],
448  x[3][0], x[3][1]);
449  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat4x3< float > const &  x)

Definition at line 453 of file string_cast.inl.

References glm::detail::format().

456  {
457  return detail::format("mat4x3((%f, %f, %f), (%f, %f, %f), (%f, %f, %f), (%f, %f, %f))",
458  x[0][0], x[0][1], x[0][2],
459  x[1][0], x[1][1], x[1][2],
460  x[2][0], x[2][1], x[2][2],
461  x[3][0], x[3][1], x[3][2]);
462  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat4x4< float > const &  x)

Definition at line 466 of file string_cast.inl.

References glm::detail::format().

469  {
470  return detail::format("mat4x4((%f, %f, %f, %f), (%f, %f, %f, %f), (%f, %f, %f, %f), (%f, %f, %f, %f))",
471  x[0][0], x[0][1], x[0][2], x[0][3],
472  x[1][0], x[1][1], x[1][2], x[1][3],
473  x[2][0], x[2][1], x[2][2], x[2][3],
474  x[3][0], x[3][1], x[3][2], x[3][3]);
475  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat2x2< double > const &  x)

Definition at line 482 of file string_cast.inl.

References glm::detail::format().

485  {
486  return detail::format("dmat2x2((%f, %f), (%f, %f))",
487  x[0][0], x[0][1],
488  x[1][0], x[1][1]);
489  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat2x3< double > const &  x)

Definition at line 493 of file string_cast.inl.

References glm::detail::format().

496  {
497  return detail::format("dmat2x3((%f, %f, %f), (%f, %f, %f))",
498  x[0][0], x[0][1], x[0][2],
499  x[1][0], x[1][1], x[1][2]);
500  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat2x4< double > const &  x)

Definition at line 504 of file string_cast.inl.

References glm::detail::format().

507  {
508  return detail::format("dmat2x4((%f, %f, %f, %f), (%f, %f, %f, %f))",
509  x[0][0], x[0][1], x[0][2], x[0][3],
510  x[1][0], x[1][1], x[1][2], x[1][3]);
511  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat3x2< double > const &  x)

Definition at line 515 of file string_cast.inl.

References glm::detail::format().

518  {
519  return detail::format("dmat3x2((%f, %f), (%f, %f), (%f, %f))",
520  x[0][0], x[0][1],
521  x[1][0], x[1][1],
522  x[2][0], x[2][1]);
523  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat3x3< double > const &  x)

Definition at line 527 of file string_cast.inl.

References glm::detail::format().

530  {
531  return detail::format("dmat3x3((%f, %f, %f), (%f, %f, %f), (%f, %f, %f))",
532  x[0][0], x[0][1], x[0][2],
533  x[1][0], x[1][1], x[1][2],
534  x[2][0], x[2][1], x[2][2]);
535  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat3x4< double > const &  x)

Definition at line 539 of file string_cast.inl.

References glm::detail::format().

542  {
543  return detail::format("dmat3x4((%f, %f, %f, %f), (%f, %f, %f, %f), (%f, %f, %f, %f))",
544  x[0][0], x[0][1], x[0][2], x[0][3],
545  x[1][0], x[1][1], x[1][2], x[1][3],
546  x[2][0], x[2][1], x[2][2], x[2][3]);
547  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat4x2< double > const &  x)

Definition at line 551 of file string_cast.inl.

References glm::detail::format().

554  {
555  return detail::format("dmat4x2((%f, %f), (%f, %f), (%f, %f), (%f, %f))",
556  x[0][0], x[0][1],
557  x[1][0], x[1][1],
558  x[2][0], x[2][1],
559  x[3][0], x[3][1]);
560  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat4x3< double > const &  x)

Definition at line 564 of file string_cast.inl.

References glm::detail::format().

567  {
568  return detail::format("dmat4x3((%f, %f, %f), (%f, %f, %f), (%f, %f, %f), (%f, %f, %f))",
569  x[0][0], x[0][1], x[0][2],
570  x[1][0], x[1][1], x[1][2],
571  x[2][0], x[2][1], x[2][2],
572  x[3][0], x[3][1], x[3][2]);
573  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<>
GLM_FUNC_QUALIFIER std::string glm::to_string ( detail::tmat4x4< double > const &  x)

Definition at line 577 of file string_cast.inl.

References glm::detail::format().

580  {
581  return detail::format("dmat4x4((%f, %f, %f, %f), (%f, %f, %f, %f), (%f, %f, %f, %f), (%f, %f, %f, %f))",
582  x[0][0], x[0][1], x[0][2], x[0][3],
583  x[1][0], x[1][1], x[1][2], x[1][3],
584  x[2][0], x[2][1], x[2][2], x[2][3],
585  x[3][0], x[3][1], x[3][2], x[3][3]);
586  }
GLM_FUNC_QUALIFIER std::string format(const char *msg,...)
Definition: string_cast.inl:16
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat4x4<T> glm::translate_slow ( detail::tmat4x4< T > const &  m,
detail::tvec3< T > const &  v 
)

Definition at line 101 of file matrix_transform.inl.

References T.

105  {
106  detail::tmat4x4<T> Result(T(1));
107  Result[3] = detail::tvec4<T>(v, T(1));
108  return m * Result;
109 
110  //detail::tmat4x4<valType> Result(m);
111  Result[3] = m[0] * v[0] + m[1] * v[1] + m[2] * v[2] + m[3];
112  //Result[3][0] = m[0][0] * v[0] + m[1][0] * v[1] + m[2][0] * v[2] + m[3][0];
113  //Result[3][1] = m[0][1] * v[0] + m[1][1] * v[1] + m[2][1] * v[2] + m[3][1];
114  //Result[3][2] = m[0][2] * v[0] + m[1][2] * v[1] + m[2][2] * v[2] + m[3][2];
115  //Result[3][3] = m[0][3] * v[0] + m[1][3] * v[1] + m[2][3] * v[2] + m[3][3];
116  //return Result;
117  }
const GLdouble * m
Definition: glew.h:8385
const GLdouble * v
Definition: glew.h:1377
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat2x2<T> glm::transpose ( detail::tmat2x2< T > const &  m)

Definition at line 227 of file func_matrix.inl.

References GLM_STATIC_ASSERT.

230  {
231  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'transpose' only accept floating-point inputs");
232 
233  detail::tmat2x2<T> result(detail::tmat2x2<T>::null);
234  result[0][0] = m[0][0];
235  result[0][1] = m[1][0];
236  result[1][0] = m[0][1];
237  result[1][1] = m[1][1];
238  return result;
239  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
GLuint64EXT * result
Definition: glew.h:12708
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat3x3<T> glm::transpose ( detail::tmat3x3< T > const &  m)

Definition at line 243 of file func_matrix.inl.

References GLM_STATIC_ASSERT.

246  {
247  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'transpose' only accept floating-point inputs");
248 
249  detail::tmat3x3<T> result(detail::tmat3x3<T>::null);
250  result[0][0] = m[0][0];
251  result[0][1] = m[1][0];
252  result[0][2] = m[2][0];
253 
254  result[1][0] = m[0][1];
255  result[1][1] = m[1][1];
256  result[1][2] = m[2][1];
257 
258  result[2][0] = m[0][2];
259  result[2][1] = m[1][2];
260  result[2][2] = m[2][2];
261  return result;
262  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
GLuint64EXT * result
Definition: glew.h:12708
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat4x4<T> glm::transpose ( detail::tmat4x4< T > const &  m)

Definition at line 266 of file func_matrix.inl.

References GLM_STATIC_ASSERT.

269  {
270  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'transpose' only accept floating-point inputs");
271 
272  detail::tmat4x4<T> result(detail::tmat4x4<T>::null);
273  result[0][0] = m[0][0];
274  result[0][1] = m[1][0];
275  result[0][2] = m[2][0];
276  result[0][3] = m[3][0];
277 
278  result[1][0] = m[0][1];
279  result[1][1] = m[1][1];
280  result[1][2] = m[2][1];
281  result[1][3] = m[3][1];
282 
283  result[2][0] = m[0][2];
284  result[2][1] = m[1][2];
285  result[2][2] = m[2][2];
286  result[2][3] = m[3][2];
287 
288  result[3][0] = m[0][3];
289  result[3][1] = m[1][3];
290  result[3][2] = m[2][3];
291  result[3][3] = m[3][3];
292  return result;
293  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
GLuint64EXT * result
Definition: glew.h:12708
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat2x3<T> glm::transpose ( detail::tmat3x2< T > const &  m)

Definition at line 297 of file func_matrix.inl.

References GLM_STATIC_ASSERT.

300  {
301  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'transpose' only accept floating-point inputs");
302 
303  detail::tmat2x3<T> result(detail::tmat2x3<T>::null);
304  result[0][0] = m[0][0];
305  result[0][1] = m[1][0];
306  result[0][2] = m[2][0];
307  result[1][0] = m[0][1];
308  result[1][1] = m[1][1];
309  result[1][2] = m[2][1];
310  return result;
311  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
GLuint64EXT * result
Definition: glew.h:12708
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat3x2<T> glm::transpose ( detail::tmat2x3< T > const &  m)

Definition at line 315 of file func_matrix.inl.

References GLM_STATIC_ASSERT.

318  {
319  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'transpose' only accept floating-point inputs");
320 
321  detail::tmat3x2<T> result(detail::tmat3x2<T>::null);
322  result[0][0] = m[0][0];
323  result[0][1] = m[1][0];
324  result[1][0] = m[0][1];
325  result[1][1] = m[1][1];
326  result[2][0] = m[0][2];
327  result[2][1] = m[1][2];
328  return result;
329  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
GLuint64EXT * result
Definition: glew.h:12708
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat2x4<T> glm::transpose ( detail::tmat4x2< T > const &  m)

Definition at line 333 of file func_matrix.inl.

References GLM_STATIC_ASSERT.

336  {
337  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'transpose' only accept floating-point inputs");
338 
339  detail::tmat2x4<T> result(detail::tmat2x4<T>::null);
340  result[0][0] = m[0][0];
341  result[0][1] = m[1][0];
342  result[0][2] = m[2][0];
343  result[0][3] = m[3][0];
344  result[1][0] = m[0][1];
345  result[1][1] = m[1][1];
346  result[1][2] = m[2][1];
347  result[1][3] = m[3][1];
348  return result;
349  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
GLuint64EXT * result
Definition: glew.h:12708
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat4x2<T> glm::transpose ( detail::tmat2x4< T > const &  m)

Definition at line 353 of file func_matrix.inl.

References GLM_STATIC_ASSERT.

356  {
357  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'transpose' only accept floating-point inputs");
358 
359  detail::tmat4x2<T> result(detail::tmat4x2<T>::null);
360  result[0][0] = m[0][0];
361  result[0][1] = m[1][0];
362  result[1][0] = m[0][1];
363  result[1][1] = m[1][1];
364  result[2][0] = m[0][2];
365  result[2][1] = m[1][2];
366  result[3][0] = m[0][3];
367  result[3][1] = m[1][3];
368  return result;
369  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
GLuint64EXT * result
Definition: glew.h:12708
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat3x4<T> glm::transpose ( detail::tmat4x3< T > const &  m)

Definition at line 373 of file func_matrix.inl.

References GLM_STATIC_ASSERT.

376  {
377  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'transpose' only accept floating-point inputs");
378 
379  detail::tmat3x4<T> result(detail::tmat3x4<T>::null);
380  result[0][0] = m[0][0];
381  result[0][1] = m[1][0];
382  result[0][2] = m[2][0];
383  result[0][3] = m[3][0];
384  result[1][0] = m[0][1];
385  result[1][1] = m[1][1];
386  result[1][2] = m[2][1];
387  result[1][3] = m[3][1];
388  result[2][0] = m[0][2];
389  result[2][1] = m[1][2];
390  result[2][2] = m[2][2];
391  result[2][3] = m[3][2];
392  return result;
393  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
GLuint64EXT * result
Definition: glew.h:12708
template<typename T >
GLM_FUNC_QUALIFIER detail::tmat4x3<T> glm::transpose ( detail::tmat3x4< T > const &  m)

Definition at line 397 of file func_matrix.inl.

References GLM_STATIC_ASSERT.

400  {
401  GLM_STATIC_ASSERT(detail::type<T>::is_float, "'transpose' only accept floating-point inputs");
402 
403  detail::tmat4x3<T> result(detail::tmat4x3<T>::null);
404  result[0][0] = m[0][0];
405  result[0][1] = m[1][0];
406  result[0][2] = m[2][0];
407  result[1][0] = m[0][1];
408  result[1][1] = m[1][1];
409  result[1][2] = m[2][1];
410  result[2][0] = m[0][2];
411  result[2][1] = m[1][2];
412  result[2][2] = m[2][2];
413  result[3][0] = m[0][3];
414  result[3][1] = m[1][3];
415  result[3][2] = m[2][3];
416  return result;
417  }
#define GLM_STATIC_ASSERT(x, message)
Definition: setup.hpp:641
const GLdouble * m
Definition: glew.h:8385
GLuint64EXT * result
Definition: glew.h:12708
GLM_FUNC_QUALIFIER detail::fmat4x4SIMD glm::transpose ( detail::fmat4x4SIMD const &  m)

Definition at line 569 of file simd_mat4.inl.

References glm::detail::sse_transpose_ps().

570 {
571  detail::fmat4x4SIMD result;
572  detail::sse_transpose_ps(&m[0].Data, &result[0].Data);
573  return result;
574 }
const GLdouble * m
Definition: glew.h:8385
GLM_FUNC_QUALIFIER void sse_transpose_ps(__m128 const in[4], __m128 out[4])
GLuint64EXT * result
Definition: glew.h:12708
GLM_FUNC_QUALIFIER detail::fvec4SIMD glm::trunc ( detail::fvec4SIMD const &  x)

Definition at line 312 of file simd_vec4.inl.

References glm::detail::sse_flr_ps(), and glm::detail::zero.

315 {
316  //return x < 0 ? -floor(-x) : floor(x);
317 
318  __m128 Flr0 = detail::sse_flr_ps(_mm_sub_ps(_mm_setzero_ps(), x.Data));
319  __m128 Sub0 = _mm_sub_ps(Flr0, x.Data);
320  __m128 Flr1 = detail::sse_flr_ps(x.Data);
321 
322  __m128 Cmp0 = _mm_cmplt_ps(x.Data, glm::detail::zero);
323  __m128 Cmp1 = _mm_cmpnlt_ps(x.Data, glm::detail::zero);
324 
325  __m128 And0 = _mm_and_ps(Sub0, Cmp0);
326  __m128 And1 = _mm_and_ps(Flr1, Cmp1);
327 
328  return _mm_or_ps(And0, And1);
329 }
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER __m128 sse_flr_ps(__m128 x)
static const __m128 GLM_VAR_USED zero
template<typename T >
GLM_FUNC_QUALIFIER uint16 glm::u16channel_cast ( a)

Definition at line 19 of file color_cast.inl.

References T.

20  {
21  return static_cast<uint16>(a * T(65535));
22  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
unsigned short uint16
Definition: _detail.hpp:345
template<typename T >
GLM_FUNC_QUALIFIER uint8 glm::u8channel_cast ( a)

Definition at line 13 of file color_cast.inl.

References T.

14  {
15  return static_cast<uint8>(a * T(255));
16  }
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
unsigned char uint8
Definition: _detail.hpp:344
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::uaddCarry ( detail::tvec2< T > const &  x,
detail::tvec2< T > const &  y,
detail::tvec2< T > &  Carry 
)

Definition at line 53 of file func_integer.inl.

References uaddCarry().

58  {
59  return detail::tvec2<T>(
60  uaddCarry(x[0], y[0], Carry[0]),
61  uaddCarry(x[1], y[1], Carry[1]));
62  }
GLM_FUNC_QUALIFIER detail::tvec4< T > uaddCarry(detail::tvec4< T > const &x, detail::tvec4< T > const &y, detail::tvec4< T > &Carry)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::uaddCarry ( detail::tvec3< T > const &  x,
detail::tvec3< T > const &  y,
detail::tvec3< T > &  Carry 
)

Definition at line 66 of file func_integer.inl.

References uaddCarry().

71  {
72  return detail::tvec3<T>(
73  uaddCarry(x[0], y[0], Carry[0]),
74  uaddCarry(x[1], y[1], Carry[1]),
75  uaddCarry(x[2], y[2], Carry[2]));
76  }
GLM_FUNC_QUALIFIER detail::tvec4< T > uaddCarry(detail::tvec4< T > const &x, detail::tvec4< T > const &y, detail::tvec4< T > &Carry)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::uaddCarry ( detail::tvec4< T > const &  x,
detail::tvec4< T > const &  y,
detail::tvec4< T > &  Carry 
)

Definition at line 80 of file func_integer.inl.

References uaddCarry().

85  {
86  return detail::tvec4<T>(
87  uaddCarry(x[0], y[0], Carry[0]),
88  uaddCarry(x[1], y[1], Carry[1]),
89  uaddCarry(x[2], y[2], Carry[2]),
90  uaddCarry(x[3], y[3], Carry[3]));
91  }
GLM_FUNC_QUALIFIER detail::tvec4< T > uaddCarry(detail::tvec4< T > const &x, detail::tvec4< T > const &y, detail::tvec4< T > &Carry)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER float glm::uintBitsToFloat ( uint const &  value)

Definition at line 1090 of file func_common.inl.

1091  {
1092  union
1093  {
1094  float f;
1095  uint u;
1096  } fu;
1097 
1098  fu.u = value;
1099  return fu.f;
1100  }
uint_t uint
Definition: type_int.hpp:131
GLclampf f
Definition: glew.h:3390
GLsizei const GLfloat * value
Definition: glew.h:1835
GLM_FUNC_QUALIFIER detail::tvec2<float> glm::uintBitsToFloat ( detail::tvec2< uint > const &  value)

Definition at line 1103 of file func_common.inl.

References uintBitsToFloat(), glm::detail::tvec2< T >::x, and glm::detail::tvec2< T >::y.

1106  {
1107  return detail::tvec2<float>(
1109  uintBitsToFloat(value.y));
1110  }
GLM_FUNC_QUALIFIER detail::tvec4< float > uintBitsToFloat(detail::tvec4< uint > const &value)
GLsizei const GLfloat * value
Definition: glew.h:1835
GLM_FUNC_QUALIFIER detail::tvec3<float> glm::uintBitsToFloat ( detail::tvec3< uint > const &  value)

Definition at line 1113 of file func_common.inl.

References uintBitsToFloat(), glm::detail::tvec3< T >::x, glm::detail::tvec3< T >::y, and glm::detail::tvec3< T >::z.

1116  {
1117  return detail::tvec3<float>(
1120  uintBitsToFloat(value.z));
1121  }
GLM_FUNC_QUALIFIER detail::tvec4< float > uintBitsToFloat(detail::tvec4< uint > const &value)
GLsizei const GLfloat * value
Definition: glew.h:1835
GLM_FUNC_QUALIFIER detail::tvec4<float> glm::uintBitsToFloat ( detail::tvec4< uint > const &  value)

Definition at line 1124 of file func_common.inl.

References uintBitsToFloat(), glm::detail::tvec4< T >::w, glm::detail::tvec4< T >::x, glm::detail::tvec4< T >::y, and glm::detail::tvec4< T >::z.

1127  {
1128  return detail::tvec4<float>(
1132  uintBitsToFloat(value.w));
1133  }
GLM_FUNC_QUALIFIER detail::tvec4< float > uintBitsToFloat(detail::tvec4< uint > const &value)
GLsizei const GLfloat * value
Definition: glew.h:1835
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::umulExtended ( detail::tvec2< T > const &  x,
detail::tvec2< T > const &  y,
detail::tvec2< T > &  msb,
detail::tvec2< T > &  lsb 
)

Definition at line 170 of file func_integer.inl.

References umulExtended().

176  {
177  return detail::tvec2<T>(
178  umulExtended(x[0], y[0], msb, lsb),
179  umulExtended(x[1], y[1], msb, lsb));
180  }
GLM_FUNC_QUALIFIER detail::tvec4< T > umulExtended(detail::tvec4< T > const &x, detail::tvec4< T > const &y, detail::tvec4< T > &msb, detail::tvec4< T > &lsb)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::umulExtended ( detail::tvec3< T > const &  x,
detail::tvec3< T > const &  y,
detail::tvec3< T > &  msb,
detail::tvec3< T > &  lsb 
)

Definition at line 184 of file func_integer.inl.

References umulExtended().

190  {
191  return detail::tvec3<T>(
192  umulExtended(x[0], y[0], msb, lsb),
193  umulExtended(x[1], y[1], msb, lsb),
194  umulExtended(x[2], y[2], msb, lsb));
195  }
GLM_FUNC_QUALIFIER detail::tvec4< T > umulExtended(detail::tvec4< T > const &x, detail::tvec4< T > const &y, detail::tvec4< T > &msb, detail::tvec4< T > &lsb)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::umulExtended ( detail::tvec4< T > const &  x,
detail::tvec4< T > const &  y,
detail::tvec4< T > &  msb,
detail::tvec4< T > &  lsb 
)

Definition at line 199 of file func_integer.inl.

References umulExtended().

205  {
206  return detail::tvec4<T>(
207  umulExtended(x[0], y[0], msb, lsb),
208  umulExtended(x[1], y[1], msb, lsb),
209  umulExtended(x[2], y[2], msb, lsb),
210  umulExtended(x[3], y[3], msb, lsb));
211  }
GLM_FUNC_QUALIFIER detail::tvec4< T > umulExtended(detail::tvec4< T > const &x, detail::tvec4< T > const &y, detail::tvec4< T > &msb, detail::tvec4< T > &lsb)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::usubBorrow ( detail::tvec2< T > const &  x,
detail::tvec2< T > const &  y,
detail::tvec2< T > &  Borrow 
)

Definition at line 111 of file func_integer.inl.

References usubBorrow().

116  {
117  return detail::tvec2<T>(
118  usubBorrow(x[0], y[0], Borrow[0]),
119  usubBorrow(x[1], y[1], Borrow[1]));
120  }
GLM_FUNC_QUALIFIER detail::tvec4< T > usubBorrow(detail::tvec4< T > const &x, detail::tvec4< T > const &y, detail::tvec4< T > &Borrow)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::usubBorrow ( detail::tvec3< T > const &  x,
detail::tvec3< T > const &  y,
detail::tvec3< T > &  Borrow 
)

Definition at line 124 of file func_integer.inl.

References usubBorrow().

129  {
130  return detail::tvec3<T>(
131  usubBorrow(x[0], y[0], Borrow[0]),
132  usubBorrow(x[1], y[1], Borrow[1]),
133  usubBorrow(x[2], y[2], Borrow[2]));
134  }
GLM_FUNC_QUALIFIER detail::tvec4< T > usubBorrow(detail::tvec4< T > const &x, detail::tvec4< T > const &y, detail::tvec4< T > &Borrow)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
template<typename T >
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::usubBorrow ( detail::tvec4< T > const &  x,
detail::tvec4< T > const &  y,
detail::tvec4< T > &  Borrow 
)

Definition at line 138 of file func_integer.inl.

References usubBorrow().

143  {
144  return detail::tvec4<T>(
145  usubBorrow(x[0], y[0], Borrow[0]),
146  usubBorrow(x[1], y[1], Borrow[1]),
147  usubBorrow(x[2], y[2], Borrow[2]),
148  usubBorrow(x[3], y[3], Borrow[3]));
149  }
GLM_FUNC_QUALIFIER detail::tvec4< T > usubBorrow(detail::tvec4< T > const &x, detail::tvec4< T > const &y, detail::tvec4< T > &Borrow)
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1238
GLint GLint GLint GLint GLint x
Definition: glew.h:1238
GLM_FUNC_QUALIFIER detail::tvec4<float> glm::vec4_cast ( detail::fvec4SIMD const &  x)

Definition at line 273 of file simd_vec4.inl.

References GLM_ALIGN.

276 {
277  GLM_ALIGN(16) detail::tvec4<float> Result;
278  _mm_store_ps(&Result[0], x.Data);
279  return Result;
280 }
#define GLM_ALIGN
Definition: _detail.hpp:475
GLint GLint GLint GLint GLint x
Definition: glew.h:1238